typedef
struct sqlite3 sqlite3;
每乙個sqlite資料庫都是通過乙個指向不透明的名為「sqlite3」的結構體指標來代表的,我們可以將sqlite3看作是乙個指標,函式 sqlite3_open(), sqlite3_open16()和sqlite3_open_v2()作為建構函式的介面,函式sqlite3_close(), sqlite3_close_v2()作為析構函式的介面,同時也有很多的其他的介面,但是主要的就是這幾個函式。
int
sqlite2_open
(const
char
*filename,
//utf-8型別的資料庫名稱
sqlite3 *
*ppdb //資料庫操作的控制代碼);
intsqlite3_open16
(const
void
*filename,
//utf-8型別的資料庫名稱
sqlite3 *
*ppdb //資料可以的操操作控制代碼);
intsqlite3_open_v2
(const
char
*filename,
//utf-8型別的資料庫名稱
sqlite3 *
*ppdb,
//資料庫的操作控制代碼
int flags,
//標誌位
const
char
*zvfs //所使用的的vfs模型的名字
);
使用這種方式開啟乙個資料庫是將乙個檔名作為資料庫名稱,這個檔名如果是utf-8編碼的話,就是用sqlite3_open()和sqlite_open_v2()函式,如果是utf-16的話,就是用sqlite3_open16()函式,資料的連線通常是使用 ppdb的方式返回,即使出現了乙個錯誤,唯一的期望是如果sqlite未能給sqlite3物件分配乙個空間,空指標將會代替ppdb作為返回值,如果資料庫正常的開啟,將會返回sqlite_ok,否則就返回乙個故障碼
error_code,函式sqlite3_errmsg()和sqlite3_errmsg()可以將返回的故障**轉化成英語
預設的資料庫的編碼格式是utf-8d的,而且是由函式sqlite3_open()和函式sqlite3_open_v2()建立的,sqlite3_open16()是使用utf-16編碼的
如果資料庫是否被成功的開啟,資料庫的連線必須使用函式sqlite3_close()來關閉連線
函式sqlite3_open_v2()的介面可slqite3_open()的介面是很相似的,只不過斷了2個附加的引數,函式sqlite3_open_v2()的標誌位將使用下面的幾個值,可以在sqlite_open_nomutex(不帶互斥),
sqlite_open_fullmutex(使用全部互斥),sqlite_open_sharecache(共享快取),sqlite_open_privatecache(私有快取),或者使用sqlite_open_uri標誌位
如果函式sqlite3_open_v2()的第三個引數不是上面定義的幾個選項的引數,則後果是不會預估的
如果sqlite_open_nomutex標誌位設定以後,然後,只要在編譯時或啟動時沒有設定單執行緒模式,資料庫連線就會以多執行緒模式開啟。如果選擇了sqlite_open_fullmutex標誌位,除非在編譯或者執行階段設定了單執行緒模式,則資料庫將會以序列的方式來建立,sqlite_open_sharecache將會使資料庫使用共享快取模式,不管資料庫是否使用了共享緩衝模式,標誌位sqlite_open_privatecache將會是資料庫的連線不在共享快取模式
函式sqlite3_open_v2()的第四個引數是
sqlite3_vfs,它定義了新資料庫連線的時候所使用的作業系統的介面,如果是null,則將會使用預設的sqlite3_vfs物件
如果檔名是":memory:",然後乙個私有的,內部儲存的資料庫將會為了這個連線而建立,如果資料庫連線成功,這個臨時的內部儲存資料庫將會兇案是,後面開發的sqlite版本將會使用附件的特殊檔名,它以":「開頭,建議如果資料庫不是以「:」開頭的話,應該在檔名的開頭加乙個比如」./"的字首
如果檔名是乙個孔子字串,臨時的在磁碟的資料庫將會穿件,這個私有的資料庫將會在資料庫斷開連線後自動的刪除
如果uri檔名的解析功能使能以後,並且檔名的解析從"file:"開始,這個檔名將會作為乙個uri來解析,如果sqlite_open_uri標誌位在函式sqlite3_open_v2()中給定,或者在函式sqlite3_config()中使用sqlite_config_uri標誌位使能了全域性uri檔名解析,則uri檔名解析將會使能,uri檔名解析預設情況下是關閉的,但是後面開發的新版的資料庫可能會預設情況下使能uri檔名解析。
uri檔名是根據rfc 3986解析的,如果uri中包含乙個檔案的所有權者,它就不能是空的字串或是字串「localhost」,如果所屬人不是空或者不是字串「localhost」,將會報故障,判斷構成了uri,如果出現了,就會忽視
sqlite使用路徑來構成uri的名稱,這個路徑在硬碟中將會包含資料庫,如果路徑是由』/『開始的,他將會季錫成乙個絕對路徑,如果不是以』/'開頭,將會解析成乙個相對路徑,在window中,第乙個名字是絕對的cup按路徑
疑問組成的uri解析將會包含sqlite自己,或者通過乙個定製的vfs解析,sqlite和內部的的vfses解析警徽遵循以下引數
C 連線SQlite資料庫
這個位址有 追問 然後這裡呼叫,sqliteconnection conn new sqliteconnection configurationmanager.connectionstrings constr connectionstring 沒效果.回答 你是按照那裡面的寫的嗎?只要這個data ...
vc連線sqlite資料庫
下面是在mfc中連線sqlite資料庫,並向表中插入資料的部分 首先當然是配置sqlite3的執行環境了,tools options directories 裡分別設定所要包含的標頭檔案,lib的路徑,並 將sqlite3.dll拷貝到當前工程目錄下,在引用到的原始檔中包含sqlite3.h標頭檔案...
sqlite關閉資料庫連線
sqlite3 finalize int sqlite3 finalize sqlite3 stmt pstmt 這個過程銷毀前面被sqlite3 prepare建立的準備語句,每個準備語句都必須使用這個函式去銷毀以防止記憶體洩露。在空指標上呼叫這個函式沒有什麼影響,同時可以準備語句的生命週期的任一...