`
sunnyday55555
  • 浏览: 62848 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

sqlite数据库操作

阅读更多
SQLite是一款轻型的数据库,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java 等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。

SQLite虽然很小巧,但是支持的SQL语句不会逊色于其他开源数据库,它支持的SQL包括:

ATTACH DATABASE
BEGIN TRANSACTION
comment
COMMIT TRANSACTION
COPY
CREATE INDEX
CREATE TABLE
CREATE TRIGGER
CREATE VIEW
DELETE
DETACH DATABASE
DROP INDEX
DROP TABLE
DROP TRIGGER
DROP VIEW
END TRANSACTION
EXPLAIN
expression
INSERT
ON CONFLICT clause
PRAGMA
REPLACE
ROLLBACK TRANSACTION
SELECT
UPDATE

同时它还支持事务处理功能等等。也有人说它象Microsoft的Access,有时候真的觉得有点象,但是事实上它们区别很大。比如 SQLite 支持跨平台,操作简单,能够使用很多语言直接创建数据库,而不象Access一样需要Office的支持。如果你是个很小型的应用,或者你想做嵌入式开发,没有合适的数据库系统,那么现在你可以考虑使用SQLite。目前它的最新版本是 3.2.2,它的官方网站是:http://www.sqlite.org,能在上面获得源代码和文档。同时因为数据库结构简单,系统源代码也不是很多,也适合想研究数据库系统开发的专业人士。

现在我们开始简单的介绍,主要我是想讲清楚几个问题,一是如何安装使用,二是如何跟PHP结合开发。

一、安装

1. Windows平台

下载windows下的文件,其实就是一个命令行程序,(下载地址:http://www.sqlite.org/sqlite-3_2_2.zip),这个命令行程序用来包括生成数据库文件、执行SQL查询、备份数据库等等功能。
下载后比如我们解压缩到 D:\Downloads\sqlite\sqlite-3_2_2 这个目录下,那么我们进入cmd,并且进入该目录:
cd D:\Downloads\sqlite\sqlite-3_2_2
D:\Downloads\sqlite\sqlite-3_2_2>sqlite3 test.db
# 如果test.db不存在,那么就产生一个数据库文件,如果存在就直接使用该数据库文件,相当于mysql中的use
SQLite version 3.2.2
Enter ".help" for instructions
sqlite>
# SQLite的提示符,如果想查看命令帮助输入 .help,在sqlite中所有系统命令都是 . 开头的:
sqlite> .help
.databases              List names and files of attached databases
.dump ?TABLE? ...       Dump the database in an SQL text format
.echo ON|OFF            Turn command echo on or off
.exit                   Exit this program
.explain ON|OFF         Turn output mode suitable for EXPLAIN on or off.
.header(s) ON|OFF       Turn display of headers on or off
.help                   Show this message
.import FILE TABLE      Import data from FILE into TABLE
.indices TABLE          Show names of all indices on TABLE
.mode MODE ?TABLE?      Set output mode where MODE is one of:
                          csv       Comma-separated values
                          column    Left-aligned columns.   (See .width)
                          html      HTML <table> code
                          insert    SQL insert statements for TABLE
                          line      One value per line
                          list      Values delimited by .separator string
                          tabs      Tab-separated values
                          tcl       TCL list elements
.nullvalue STRING       Print STRING in place of NULL values
.output FILENAME        Send output to FILENAME
.output stdout          Send output to the screen
.prompt MAIN CONTINUE   Replace the standard prompts
.quit                   Exit this program
.read FILENAME          Execute SQL in FILENAME
.schema ?TABLE?         Show the CREATE statements
.separator STRING       Change separator used by output mode and .import
.show                   Show the current values for various settings
.tables ?PATTERN?       List names of tables matching a LIKE pattern
.timeout MS             Try opening locked tables for MS milliseconds
.width NUM NUM ...      Set column widths for "column" mode
sqlite>
www.knowsky.com
# 我们创建一个数据库catlog
sqlite> create table catalog(
    ...> id integer primarykey,
    ...> pid integer,
    ...> name varchar(10) UNIQUE
    ...> );
sqlite>
# 如果表存在就会提示:
SQL error: table catalog already exists
# 我们创建索引信息
create index catalog_idx on catalog (id asc);
# 我们查看表的信息,看有多少个表
sqlite> .table
aa        catalog
# 查看表的结构:
sqlite> .schema catalog
CREATE TABLE catalog(
id integer primary key,
pid integer,
name varchar(10) UNIQUE
);
CREATE INDEX catalog_idx on catalog(id asc);
# 给数据表插入一条记录
sqlite> insert into catalog (ppid,name) values ('001','heiyeluren');
# 成功无任何提示,如果表达式错误提示错误信息:
SQL error: near "set": syntax error
# 检索有多少条记录
sqlite> select count(*) from catalog;
1
# 检索搜索记录
sqlite> select * from catalog;
1|1|heiyeluren

反正使用标准的SQL来操作就没有问题,不清楚可以去官方网站上查看帮助信息。另外还要说明的是SQLite不支持修改表结构,如果要修改表结构,只有删除表重新再建立,所以建立表的时候一定要考虑扩展性。估计以后这方面的功能会加强。


2. Linux/Unix 平台

error: 目前还没装过,呵呵,不过估计跟Windows差不多,改天把这部分内容补上。


二、PHP对SQLite的开发

PHP 5开始不再默认支持Mysql,而是默认支持SQLite,可见它的影响力多么大,所以如果你想做SQLite的PHP开发,建议你使用PHP 5.0.0以上版本,我目前使用的是 PHP 5.0.4版本,直接支持SQLite扩展,这里我就不仔细讲如何安装PHP扩展,如果不清楚可以查看PHP相关文档。
这里我主要是讲针对SQLite的开发。目前PHP的主流DB类都支持SQLite的驱动,包括PEAR::DB类、ADOdb类都支持,所以使用DB来来做开发也是个好的选择。

(以下操作为了简便,都是再Windows xp平台进行的)

1. 使用PHP操作已经建立好的sqlite数据库

如果你有一个已经通过sqlite.exe建立好了的数据库和表结构,那么你就能够直接对它进行操作。php中针对sqlite的处理函数比较多,你可以查看PHP手册获得详细信息。

我们使用sqlite_open()函数来打开一个sqlite数据库,它成功返回一个操作资源,失败返回false,那么以后的所有操作都是在这个资源上进行的,执行一个sql查询使用sqlite_query函数。

下面我假设你在当前PHP程序目录下有一个abc.db的sqlite数据库文件,我们对该文件进行操作:


<?php
//打开sqlite数据库
$db = @sqlite_open("abc.db");
//异常处理
if (!$db) die("Connection Sqlite failed.\n");
//添加一个叫做foo的数据库
@sqlite_query($db, "CREATE TABLE foo (bar varchar(10))");
//插入一条记录
@sqlite_query($db, "INSERT INTO foo VALUES ('fnord')");
//检索所有记录
$result = @sqlite_query($db, 'select bar from foo');
//打印获取的结果
print_r(sqlite_fetch_array($result));

?>
我们看到的输出结果是:

Array
(
     [0] => fnord
     [bar] => fnord
)

证明我们代码执行成功,没有输入请检查程序,或者你的数据库文件是否存在。

那么有了这个基本操作,你就能够考虑使用更复杂的操作和SQL来操作它,让它帮你管理信息,你可以做一个留言本,或者做一个CMS系统,我想都是没有问题的。


2. 使用PHP建立数据库并且操作

如果你没有任何sqlite.exe之类的工具,那么你也能够通过php来创建一个sqlite数据库,并且对它进行管理。
其实通过sqlite.exe程序建立的数据库,内容是空的,其实只有后来等创建表,添加数据以后,数据库文件才有,那么我们是不是能够手工添加一个文件,比如一个空的 test.db 文件,并且对它进行操作。这是完全可以,下面我们就使用PHP程序来完成创建一个数据库,并且执行简单的建立数据表,插入数据和检索数据的功能。

首先我们来看代码:(代码比较长,但比较容易理解)

<?php
/**
* 文件:sqlite.php
* 功能:对sqlite数据库的处理
* 作者:heiyeluren
* 时间:2005-8-5
*/
define("LN", __LINE__);//行号
define("FL", __FILE__);//当前文件
define("DEBUG", 0);//调试开关

$db_name = "heiyeluren.db";
//创建数据库文件,文件内容为空
if (!file_exists($db_name)) {
if (!($fp = fopen($db_name, "w+"))) {
   exit(error_code(-1, LN));
}
fclose($fp);
}
//打开数据库文件
if (!($db = sqlite_open($db_name))) {
exit(error_code(-2, LN));
}
//产生数据表结构
if (!sqlite_query($db, "DROP TABLE test")) {
exit(error_code(-3, LN));
}
if (!sqlite_query($db, "CREATE TABLE test (id integer primary key,pid integer,name varchar(10) UNIQUE)")) {
exit(error_code(-3, LN));
}
//插入一条数据
if (!sqlite_query($db, " INSERT INTO test (name) VALUES ('heiyeluren') ")) {
exit(error_code(-4, LN));
}
//把数据检索出来
if (!($result = sqlite_query($db, "SELECT * FROM test"))) {
exit(error_code(-5, LN));
}

//获取检索数据并显示
while ($array = sqlite_fetch_array($result)) {
echo "ID: ". $array[id] ."<br>Name: ". $array[name] ;
}

/* 错误信息代码函数 */
function error_code($code, $line_num, $debug=DEBUG)
{
if ($code<-6 || $code>-1) {
   return false;
}
switch($code) {
   case -1: $errmsg = "Create database file error.";
    break;
   case -2: $errmsg = "Open sqlite database file failed.";
    break;
   case -3: $errmsg = "Create table failed, table already exist.";
    break;
   case -4: $errmsg = "Insert data failed.";
    break;
   case -5: $errmsg = "Query database data failed.";
    break;
   case -6: $errmsg = "Fetch data failed.";
    break;
   case -7: $errmsg = "";
    break;
   default: $errmsg = "Unknown error.";
}

$m = "<b>[ Error ]</b><br>File: ". basename(FL) ." <br>Line: ". LN ."<br>Mesg: ". $errmsg ."";
if (!$debug) {
   ($m = $errmsg);
}
return $m;
}

?>

如果你操作无误的话,那么程序最后输出:

ID: 1
Name: heiyeluren
分享到:
评论

相关推荐

    Android实验报告Sqlite数据库操作.pdf

    Android SQLite 数据库操作报告 一、实验目的 Android 实验报告的主要目的是熟悉 Android 平台的文件操作、掌握 Android SQLite 数据库的设计和应用、熟悉 XML 和 JSON 文件的读取。通过本实验,用户可以掌握 ...

    Qt sqlite 数据库操作封装

    总结起来,Qt的SQLite数据库操作封装涉及到以下几个关键点: 1. 生成和打开数据库文件。 2. 执行SQL语句,包括查询、插入、更新和删除。 3. 设计接口,提供增删改查的重载功能。 4. 实现事务管理,确保数据一致性。 ...

    IOS sqlite数据库操作

    在`sqlitDemo`项目中,你可能可以找到一个简单的SQLite数据库操作示例,包括创建数据库、表格,以及插入、查询、更新和删除数据等操作。通过研究这个示例,你可以更好地理解如何在实际的iOS应用中使用SQLite数据库。

    C#分享辅助类:SQLite数据库操作(SQLiteDao)

    总之,`SQLiteDao`类是C#中对SQLite数据库操作的抽象封装,它使得数据库操作更加简洁、安全且易于维护。通过结合其他辅助类,如扩展方法和加密工具,我们可以构建一个强大而全面的数据库操作框架,满足各种项目需求...

    SqLite数据库操作工具

    SQLite数据库操作工具使得用户能够方便地管理和操作SQLite数据库,进行数据的增删改查等操作,而无需深入了解复杂的SQL语法或数据库管理系统。 SQLite Studio是一款非常实用的SQLite数据库管理工具,它提供了一个...

    Android SQLite数据库操作Demo

    在这个"Android SQLite数据库操作Demo"中,我们将探讨如何在Android应用中创建、查询、更新和删除SQLite数据库的数据。 1. **数据库初始化** 在Android中,我们通常通过扩展SQLiteOpenHelper类来初始化SQLite...

    SQLite数据库操作

    SQLite数据库操作,供大家一起共同分享学习。

    C# SQLite数据库操作

    总结来说,C#结合System.Data.SQLite库提供了强大且灵活的SQLite数据库操作能力,无论是创建数据库、定义表结构,还是进行增删改查等操作,都可以通过简单的代码实现。在VS2008环境下,开发者可以借助这个工具包快速...

    Android SQLite数据库操作demo

    本篇将基于一个名为"Android SQLite数据库操作demo"的示例项目,探讨如何在Android中进行SQLite数据库的相关操作。原作者的博客地址为http://blog.csdn.net/liuhe688/article/details/6715983。 首先,我们来看一下...

    AndroidStudio Sqlite数据库操作

    Sqlite数据库操作

    Delphi XE Sqlite 数据库操作案例程序.rar

    SQLite数据库操作在Delphi中的实现通常依赖于特定的组件或库,如TSQLConnection、TSQLDataset等。 首先,让我们看看数据库连接的部分。在Delphi中,我们通常会使用ADO(ActiveX Data Objects)或ODBC(Open ...

    QT连接Sqlite数据库操作

    QT连接Sqlite数据库操作 在QT开发中,连接Sqlite数据库是一种常见的操作。通过本文,读者将了解如何使用QT连接Sqlite数据库,並实现基本的数据库操作。 一、QT连接Sqlite数据库的准备工作 在使用QT连接Sqlite...

    Sqlite数据库操作类,内含调用说明

    下面将详细解释Sqlite数据库操作类的相关知识点,包括其工作原理、单例模式的应用以及如何进行调用。 一、Sqlite数据库基本操作 1. 数据库创建:使用SQLiteOpenHelper子类,重写onCreate()方法,这里会执行数据库...

    sqlite浏览器,sqlite数据库操作工具

    综上所述,SQLiteBrowser作为一个强大的SQLite数据库操作工具,为开发者和非开发者提供了一个直观的环境,便于进行数据库的创建、管理、查询以及数据的导入导出。无论是进行开发工作还是日常的数据管理,...

    sqlite数据库操作工具类(含jsqlite.jar包)

    总的来说,`sqlite数据库操作工具类(含jsqlite.jar包)`提供了便捷的方式来管理SQLite数据库,简化了Java应用程序中的数据库操作。通过`DBManager.java`工具类,开发者可以快速集成SQLite功能,而无需深入了解底层的...

    sqlite数据库操作软件

    "SQLite数据库操作软件"指的是一个专为SQLite设计的图形用户界面(GUI)工具,它使用户能够方便地进行数据库的创建、查询、更新、删除等操作,而无需深入理解复杂的SQL语法。 该软件被描述为"非常不错的绿色",这...

    SQLite数据库操作封装

    这个项目的核心在于"SQLite数据库操作封装",它允许开发者通过简单的API调用来执行常见的数据库任务,如创建表、插入数据、查询数据以及事务处理。具体来说,`SQLiteOperate.dcu`和`uTestSqlite.dcu`可能是包含封装...

    android SQLite数据库操作源码

    android SQLite数据库操作源码,包括如何建表,增删改查等操作

    sqlite数据库操作码源

    三、SQLite数据库操作码源 "码源"在这里可能指的是SQLite的API函数,用于执行数据库操作。以下是一些常见的SQLite操作: 1. 打开数据库: 使用`sqlite3_open()`函数打开一个数据库连接。例如: ```c sqlite3 *db...

Global site tag (gtag.js) - Google Analytics