技术开发 频道

SQLite一个轻量级别数据库

  【IT168 技术文档】

  SQLite 一个轻量级别数据库, 具有很多不错的特点。

  • 支持事务
  • 不需要配置,不需要安装,也不需要管理员
  • 支持大部分SQL92
  • 一个完整的数据库保存在磁盘上面一个文件
  • 同一个数据库文件可以在不同机器上面使用
  • 最大支持数据库到2T
  • 字符和BLOB的支持仅限制于可用内存
  • 整个系统少于3万行代码,少于250KB的内存占用(gcc)
  • 大部分应用比目前常见的客户端/服务端的数据库快
  • 没有其它依赖
  • 源代码开放,代码95%有较好的注释
  • 简单易用的API。官方带有TCL的编译版本。其它的单独提供

  php 从5.x 开始默认内置编译了SQLite,4.x 需要通过pear 来安装pear install sqlite SQLite常用于嵌入到程序,为一些需要数据库,但是不必要安装中/大型的数据库,而且进行的是比较普通的操作(例如select/insert/delete之类的) 。

  php的sqlite的一些例子

  以下为打开一个名叫sqlite.db的库,如果不存在,会创建一个(需要目录可写)

$db_name='sqlite.db'; $db=new SQLiteDatabase($db_name, 0644, $error); if ($error) exit($error);

  创建一个表,三个字段

  1. user,主键,非空,长度100的varchar
  2. pass,非空,长度100的varchar
  3. date,非空,整型,索引

  这里使用了queryExec而不是query。因为只是执行,不需要返回结果。注意:在SQLite里面query也是可以执行多行语句,但是如果有结果返回的,则只会有执行第一个有结果返回的命令。执行失败将会返回FALSE。

$db->queryexec(" CREATE TABLE user ( user VARCHAR ( 100 ) NOT NULL PRIMARY KEY, pass VARCHAR ( 100 ) NOT NULL, date INTEGER NOT NULL, ); CREATE INDEX user_date ON user(date); ");

  插入一条数据

$db->query("INSERT INTO user (user, pass, date) VALUES ('admin', 'password', 123456789)"); $db->query("INSERT INTO user (user, pass, date) VALUES ('super', 'password2', 123456790)");

  对某条记录进行更新

$db->query("UPDATE user SET password='password1' WHERE user='admin'");

  查询

  PHP下面SQLite的查询有很多形式

  • sqlite_array_query 进行一个查询,直接将返回的结果放入array
  • sqlite_query 是个普通的执行命令,返回为handle

  返回来的handle 可以通过以下来获取结果

  • sqlite_fetch_all 获取所有结果并且将每条结果作为array,然后放入一个大的array里面
  • sqlite_fetch_array 获取下一个结果作为array
  • sqlite_fetch_column_types — Return an array of column types from a particular table
  • sqlite_fetch_object 获取下一个结果返回一个对象(obj)
  • sqlite_fetch_single 只获取第一列结果,返回为字符变量
  • sqlite_fetch_string 等同于 sqlite_fetch_single

  因此会很方便写数据库的查询

  例子:

$r=$db->singleQuery("SELECT password FROM user WHERE user='admin'"); // $r 则为返回来的 password1 字符串 $q=$db->Query("SELECT * FROM user"); while ($r=$q->fetch()) { echo "User: $r[user] Password: $r[pass] Date: $r[date]n"; } $r=$db->fetchAll("SELECT user, password FROM user"); print_r($r);
  使用SQLite最大的好处是不用依赖使用其它DB,而且基本不需要担心DB server崩溃了你的程序就跟着挂了。
另外就是C/C++/delphi/java的可以把整个数据库引擎内嵌,不需要调用其它API,接口等。
0
相关文章