之前從網(wǎng)上看可以通過(guò)直接的方法對(duì)sqlite數(shù)據(jù)庫(kù)進(jìn)行操作。但好像只是支持sqlite2.對(duì)sqlite3不支持。于是又看了看原來(lái)要使用PDO進(jìn)行連接。
講自己寫的一個(gè)封裝的代碼放出來(lái)。
需要注意的就是ROOT是項(xiàng)目的絕對(duì)路徑。$module之類的參數(shù)根據(jù)實(shí)際情況需要。
DT_URL是失敗后的一個(gè)跳轉(zhuǎn)url。
因?yàn)閟qlite在連接失敗后發(fā)現(xiàn)自動(dòng)創(chuàng)建一個(gè)空文件。所以在connect_sqlite方法中直接判斷若此文件不存在則不進(jìn)行庫(kù)連接操作。
======================================================================================
<?php
/**
* 此類只兼容sqlite3
* @author hanxiaoyue
*/
class db_sqlite {
//打開sqlite數(shù)據(jù)庫(kù)
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();
//獲取結(jié)果
$result = $sth->fetchAll();
} catch(PDOException $e) {
echo 'Exception is:'.$e->getMessage();
}
return $result;
}
//查詢總記錄數(shù)
function query_count($conn,$sql) {
$result = 0;
try {
$sth = $conn->prepare($sql);
$sth->execute();
//獲取結(jié)果
$vec = $sth->fetchAll();
$result = $vec[0]['c'];
} catch(PDOException $e) {
echo 'Exception is:'.$e->getMessage();
}
return $result;
}
//add,update,delete執(zhí)行操作
function exec_sqlite($conn,$sql) {
$count = 0;
try {
$count = $conn->exec($sql);
} catch(PDOException $e) {
$conn->rollBack();
echo 'Exception is:'.$e->getMessage();
}
return $count;
}
/**
* 提交事務(wù)。針對(duì)執(zhí)行exec_sqlite后
*/
function commit_sqlite($conn) {
$conn->commit();
}
//關(guān)閉連接
function close_sqlite($conn) {
$conn=null;
}
}
?>
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。