讲自己写的一个封装的代码放出来。
需要注意的就是ROOT是项目的绝对路径。$module之类的参数根据实际情况需要。
DT_URL是失败后的一个跳转url。
因为sqlite在连接失败后发现自动创建一个空文件。所以在connect_sqlite方法中直接判断若此文件不存在则不进行库连接操作。
======================================================================================
<?php
/**
* 此类只兼容sqlite3
* @authorhanxiaoyue
*/
class db_sqlite {
//打开sqlite数据库
functionconnect_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链接
functionconnect_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));
}
}
//查询操作
functionquery_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;
}
//查询总记录数
functionquery_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执行操作
functionexec_sqlite($conn,$sql) {
$count =0;
try {
$count = $conn->exec($sql);
}catch(PDOException $e) {
$conn->rollBack();
echo'Exception is:'.$e->getMessage();
}
return$count;
}
/**
* 提交事务。针对执行exec_sqlite后
*/
functioncommit_sqlite($conn) {
$conn->commit();
}
//关闭连接
functionclose_sqlite($conn) {
$conn=null;
}
}
?>
原文: http://wenku.baidu.com/link?url=gyhTdLD-AkyT14vBoa5QdrJkc9Ue9GR_FuoSsfZSGfnIjxujkY-Z070SofWcfgAMnjFvAZjq25IxYRl41DBG06YEx-C_Pnn8IZOrwo7jDjy