SQLite结合PHP的开发
SQLite是一款轻型的数据库,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、php、java等,还有ODBC接口,同样比起MySQL、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。 SQLite虽然很小巧,但是支持的SQL语句不会逊色于其他开源数据库,它支持的SQL包括: ATTACH DATABASE 同时它还支持事务处理功能等等。也有人说它象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查询、备份数据库等等功能。 cd D:Downloadssqlitesqlite-3_2_2 D:Downloadssqlitesqlite-3_2_2>sqlite3 test.db # 如果test.db不存在,那么就产生一个数据库文件,如果存在就直接使用该数据库文件,相当于mysql中的use SQLite version 3.2.2 Enter ".help" for instructions sqlite> # SQLite的提示符,如果想查看命令帮助输入 .help,在sqlite中所有系统命令都是 . 开头的: # 查看帮助 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不支持修改表结构,如果要修改表结构,只有删除表重新再建立,所以建立表的时候一定要考虑扩展性。估计以后这方面的功能会加强。
error: 目前还没装过,呵呵,不过估计跟Windows差不多,改天把这部分内容补上。
PHP 5开始不再默认支持Mysql,而是默认支持SQLite,可见它的影响力多么大,所以如果你想做SQLite的PHP开发,建议你使用PHP 5.0.0以上版本,我目前使用的是 PHP 5.0.4版本,直接支持SQLite扩展,这里我就不仔细讲如何安装PHP扩展,如果不清楚可以查看PHP相关文档。 (以下操作为了简便,都是再Windows平台进行的) 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 证明我们代码执行成功,没有输入请检查程序,或者你的数据库文件是否存在。 那么有了这个基本操作,你就能够考虑使用更复杂的操作和SQL来操作它,让它帮你管理信息,你可以做一个留言本,或者做一个CMS系统,我想都是没有问题的。
如果你没有任何sqlite.exe之类的工具,那么你也能够通过php来创建一个sqlite数据库,并且对它进行管理。 首先我们来看代码:(代码比较长,但比较容易理解) <?php 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,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
* SQLite资源 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |