之前从网上看可以通过直接的方法对sqlite数据库进行操作。但好像只是支持sqlite2.对sqlite3不支持。于是又看了看原来要使用PDO进行连接。
讲自己写的一个封装的代码放出来。
需要注意的就是ROOT是项目的绝对路径。$module之类的参数根据实际情况需要。
DT_URL是失败后的一个跳转url。
因为sqlite在连接失败后发现自动创建一个空文件。所以在connect_sqlite方法中直接判断若此文件不存在则不进行库连接操作。
======================================================================================
<?php /*** 此类只兼容sqlite3* @author hanxiaoyue*/class db_sqlite {//打开sqlite数据库function connect_sqlite($dbname,$module) {$conn = null;if(file_exists(ROOT.'/db/'.$module.'/'.$dbname)) {$dbPath = 'sqlite:'.ROOT.'/db/'.$module.'/'.$dbname;try {$conn = new PDO($dbPath);$conn->beginTransaction();} catch(PDOException $e) {echo 'Exception is:'.$e->getMessage();}return $conn;} else {exit(header('location:'.DT_URL));}}//打开datafarm链接function connect_datafarm_sqlite($dbname) {$conn = null;if(file_exists(ROOT.'/data/datafarm/'.$dbname)) {$dbPath = 'sqlite:'.ROOT.'/data/datafarm/'.$dbname;try {$conn = new PDO($dbPath);$conn->beginTransaction();} catch(PDOException $e) {echo 'Exception is:'.$e->getMessage();}return $conn;} else {exit(header('location:'.DT_URL));}}//查询操作function query_sqlite($conn,$sql) {$result = array();try {$sth = $conn->prepare($sql);$sth->execute();//获取结果$result = $sth->fetchAll();} catch(PDOException $e) {echo 'Exception is:'.$e->getMessage();}return $result;}//查询总记录数function query_count($conn,$sql) {$result = 0;try {$sth = $conn->prepare($sql);$sth->execute();//获取结果$vec = $sth->fetchAll();$result = $vec[0]['c'];} catch(PDOException $e) {echo 'Exception is:'.$e->getMessage();}return $result;}//add,update,delete执行操作function exec_sqlite($conn,$sql) {$count = 0;try {$count = $conn->exec($sql);} catch(PDOException $e) {$conn->rollBack();echo 'Exception is:'.$e->getMessage();}return $count;}/*** 提交事务。针对执行exec_sqlite后*/function commit_sqlite($conn) {$conn->commit();}//关闭连接function close_sqlite($conn) {$conn=null;}}?>