web development blog

> 编程 PHP - SQLite 开发

SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎。它有程序驱动,无须独立的数据库引擎,直接有程序调用相应的ap实现i对数据库进行存取操作。自身特点:文件体积小,支持数据库文件大小至2TB,不需要安装,无外部依赖性,动态数据类型,夸平台等。

其中,需要理解的几点:

  • 1、每一个SQLite数据库都是以单文件形式存在的,B-Tree的数据结构的形式存储在硬盘上;
  • 2、事务处理方面,SQLite通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但只有一 个可以写入数据。在某个进程或线程想数据库执行写操作之前,必须获得独占锁。在获得独占锁之后,其他的读或写操作将不会再发生;
  • 3、动态数据类型,当某个值插入到数据库时,SQLite将会检查它的类型,如果该类型与关联的列不匹配,SQLite则会尝试将该值 转换成该列的类型,如果不能转换,则该值将作为本身的类型存储,SQLite称这为"弱类型"。但有一个特例,如果是INTEGER PRIMARY KEY,则其他类型不会被转换,会报一个"datatype missmatch"的错误;

SQLite数据库支持多种开发语言,下面我使用php写的SQLite Class类演示对SQLite数据库的一些查、新增、修改、删除等操作:

//载入SQLite类
require ROOTPATH.'/lib/SQLite.class.php';
$db_name = 'SqliteDemo';
/**
 * SQLite 构造函数
 * @var 数据库名字
 * @var php的Sqlite版本 默认3
 */
$db = new SQLite($db_name);

/**
 * 新增一条记录
 * insert(表名,插入数据)
 * return 返回insert_id
 */
$iData = array('user'=>'test01','age'=>24);
$db->insert('user', $iData);

/**
 * 新增多条记录
 * insert(表名,插入数据)
 * return 返回insert_id数组
 */
$iDataArr = array(
	array('user'=>'test03','age'=>24),
	array('user'=>'test04','age'=>25),
	array('user'=>'test05','age'=>26)
);
$db->insert('user', $iDataArr);

/**
 * 查询一条记录
 * query 执行一句sql语句
 */
$db->query('select * from user');
//fetch(数组类型,是否全部) 默认数值数组,第一条记录
$list = $db->fetch();
//print_r($list);

//返回关联数组
$accoslist = $db->fetch('assoc');
//print_r($accoslist);

//返回所有关联数组
$accosAlllist = $db->fetch('assoc',true);
//print_r($accosAlllist);

//带where条件的查询
$db->query('select * from user where age=?',array(24));
$wlist = $db->fetch('assoc',true);
//print_r($wlist);

//带多个where条件的查询
$db->query('select id from user where user=? and age=?',array('test01',24));
$wwlist = $db->fetch('assoc',true);
//print_r($wwlist);

/**
 * 快速获取单列的值
 * value 获取特定的值
 */
$single_value = $db->value('select user from user where age=26');
//echo $single_value;

/**
 * rowid
 * 检测是否存在
 */
$rowid = $db->rowid('user', 'id', 2);
//echo $rowid;

/**
 * 修改记录
 * retun 1或者0
 */
$udata = array('age'=>20);
$db->update('user', $udata, 'id', 6);

//修改多个和insert原理一样

/**
 * 删除记录
 * retun 1或者0
 */
$db->delete('user', 'id', 6);

附上源文件:SqliteDemo.zip

-留言评论-

  • 留言载入中...

-拍砖-

 

首页|前端技术|编程/php|生活|关于我

Copyright © 2012 wmhfly.com