開啟資料庫:
在執行sql資料庫之前,首先要連線資料庫(也可以稱為開啟資料庫,因為sqlite資料庫包含在單個作業系統檔案中,乙個檔案對應乙個資料庫)。
可以使用sqlite3_open(),sqlite3_open_v2(),sqlite3z_open16()函式開啟資料庫,這些函式的宣告如下:
int sqlite3_open(
const char *filename,//資料庫檔名 utf-8
sqlite3 **ppdb //out:sqlite資料庫控制代碼
);
int sqlite3_open_v2(
const char *filename, //資料庫檔名 utf-8
sqlite3 **ppdb, //out:資料庫控制代碼
int flags, //標誌
const char *zvfs //要使用的vfs模組的名稱
);
int sqlite3_open16(
const void *filename, //資料庫檔名 (utf-16)
sqlite3 **ppdb //out:sqlite資料庫控制代碼
);
一般情況下,推薦使用sqlite3_open_v2()這個函式,因為這是sqlite中最新和最強大的開啟資料庫的函式。與舊的sqlite3_open()相比,它有更多的選項,具有更強的能力。
不管選擇哪個開啟資料庫函式,他們有共同的引數:filename與ppdb
引數filename:可以是作業系統檔案,也可以是文字字串":memory:",或者為空字串,或空指標。
如果使用":memory:",sqlite3_open_v2()將在記憶體中建立資料庫,該資料庫值存在於鏈結生存期間如果檔名為空字串或者null,sqlite3_open_v2()將開啟臨時磁碟檔案,並在鏈結關閉時自動刪除該檔案。
如果是其他選項(作業系統檔案),函式將嘗試開啟通過引數值指定的資料庫檔案,如果資料庫檔案不存在,sqlite3_open_v2()函式將根據flags引數決定是否建立資料庫還是返回資料庫不存在的錯誤資訊,而其他函式則建立資料庫。
引數*ppdb:sqlite資料庫控制代碼
引數flags:包括以下位元向量:
sqlite_open_readonly:以唯讀模式開啟資料庫(資料庫已存在,否則返回錯誤)sqlite_open_readwrite:以讀寫模式開啟資料(資料庫已存在,否則返回錯誤)
sqlite_open_create:當資料庫已存在,將其開啟,當資料庫不存在,則會建立
引數flags也會結合sqlite_open_nomutex、sqlite_open_fullmute、sqlite_open_sharedcache、sqlite_open_privatecache標誌,以進一步控制資料庫控制代碼的事務行為。
引數*zfvs:允許呼叫去重寫預設的作業系統介面sqlite3_vfs方法。
關閉資料庫:
使用sqlite3_close()函式可以關閉資料庫,函式宣告如下:
int sqlite3_close(sqlite3*)
要成功執行sqlite3_close()函式,必須完成於連線關聯的所有準備查詢。只要有乙個查詢仍未完成,sqlite3_close()都會返回乙個sqlite_busy兵顯示錯誤資訊"由於有未完成的語句,所以無法關閉連線"
【注意:使用sqlite3_close()關閉連線時,如果連線上有開啟的事務,該事務將自動回滾。】
SQLite資料庫掃盲
今天注意到 sqlite 3.6.11 上個月發布的 增加了乙個我期待已久的 online backup 介面,激動之餘就順便和大夥兒聊一下sqlite資料庫。本帖權當是sqlite掃盲,如果你對sqlite已經很熟悉,本文就不必再看了。技術上的優點和特性 sqlite是乙個輕量級 跨平台的關係型資...
瞎掰 Sqlite資料庫
為了方便專案的跨平台,在選用資料庫時選擇了輕量級的跨平台資料庫 sqlite 在使用過程中,將常用介面封裝了一下,使 相對簡潔,使用起來也相對方便。目前封裝了兩個介面 一 封裝了sqlite3 exec介面 int homedatabase callmysql sqlite3 sqlfd,const...
SQLite資料庫基礎
import studentmanager.h import student.h import 4.建立資料庫並引入資料庫的標頭檔案 define ksqlfilename student.sqlite 這個類之乙個單例類,類所建立的物件是唯一的 static studentmanager mana...