freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[計算機(jī)軟件及應(yīng)用]sqlite(已修改)

2024-09-04 16:27 本頁面
 

【正文】 總覽SQLite3是SQLite一個全新的版本,它雖然是在SQLite ,但是使用了和之前的版本不兼容的數(shù)據(jù)庫格式和API. SQLite3是為了滿足以下的需求而開發(fā)的:支持UTF16編碼.用戶自定義的文本排序方法.可以對BLOBs字段建立索引.因此為了支持這些特性我改變了數(shù)據(jù)庫的格式,. 至于其他的兼容性的改變,例如全新的API等等,都將在理論介紹之后向你說明,這樣可以使你最快的一次性擺脫兼容性問題.,但是有一些重要的改變需要注意. 所有API接口函數(shù)和數(shù)據(jù)結(jié)構(gòu)的前綴都由sqlite_改為了sqlite3_. 這是為了避免同時使用SQLite .由于對于C語言應(yīng)該用什么數(shù)據(jù)類型來存放UTF16編碼的字符串并沒有一致的規(guī)范. 因此SQLite使用了普通的void* 類型來指向UTF16編碼的字符串. 客戶端使用過程中可以把void*映射成適合他們的系統(tǒng)的任何數(shù)據(jù)類型. C/C++ 接口SQLite ,此外還有一些數(shù)據(jù)結(jié)構(gòu)和預(yù)定義(defines). (完整的API介紹請參看另一份文檔.) 不過你們可以放心,這些接口使用起來不會像它的數(shù)量所暗示的那么復(fù)雜. 最簡單的程序仍然使用三個函數(shù)就可以完成: sqlite3_open(), sqlite3_exec(), 和 sqlite3_close(). 要是想更好的控制數(shù)據(jù)庫引擎的執(zhí)行,可以使用提供的sqlite3_prepare()函數(shù)把SQL語句編譯成字節(jié)碼,然后在使用sqlite3_step()函數(shù)來執(zhí)行編譯后的字節(jié)碼. 以sqlite3_column_開頭的一組API函數(shù)用來獲取查詢結(jié)果集中的信息. 許多接口函數(shù)都是成對出現(xiàn)的,同時有UTF8和UTF16兩個版本. 并且提供了一組函數(shù)用來執(zhí)行用戶自定義的SQL函數(shù)和文本排序函數(shù). 如何打開關(guān)閉數(shù)據(jù)庫 typedef struct sqlite3 sqlite3。 int sqlite3_open(const char*, sqlite3**)。 int sqlite3_open16(const void*, sqlite3**)。 int sqlite3_close(sqlite3*)。 const char *sqlite3_errmsg(sqlite3*)。 const void *sqlite3_errmsg16(sqlite3*)。 int sqlite3_errcode(sqlite3*)。sqlite3_open() 函數(shù)返回一個整數(shù)錯誤代碼,而不是像第二版中一樣返回一個指向sqlite3結(jié)構(gòu)體的指針. sqlite3_open() 和 sqlite3_open16() 的不同之處在于sqlite3_open16() 使用UTF16編碼(使用本地主機(jī)字節(jié)順序)傳遞數(shù)據(jù)庫文件名. 如果要創(chuàng)建新數(shù)據(jù)庫, sqlite3_open16() 將內(nèi)部文本轉(zhuǎn)換為UTF16編碼, 反之sqlite3_open() 將文本轉(zhuǎn)換為UTF8編碼.打開或者創(chuàng)建數(shù)據(jù)庫的命令會被緩存,直到這個數(shù)據(jù)庫真正被調(diào)用的時候才會被執(zhí)行. 而且允許使用PRAGMA聲明來設(shè)置如本地文本編碼或默認(rèn)內(nèi)存頁面大小等選項和參數(shù).sqlite3_errcode() 通常用來獲取最近調(diào)用的API接口返回的錯誤代碼. sqlite3_errmsg() 則用來得到這些錯誤代碼所對應(yīng)的文字說明. 這些錯誤信息將以 UTF8 的編碼返回,并且在下一次調(diào)用任何SQLite API函數(shù)的時候被清除. sqlite3_errmsg16() 和 sqlite3_errmsg() 大體上相同,除了返回的錯誤信息將以 UTF16 本機(jī)字節(jié)順序編碼.SQLite3的錯誤代碼相比SQLite2沒有任何的改變,它們分別是:define SQLITE_OK 0 /* Successful result */define SQLITE_ERROR 1 /* SQL error or missing database */define SQLITE_INTERNAL 2 /* An internal logic error in SQLite */define SQLITE_PERM 3 /* Access permission denied */define SQLITE_ABORT 4 /* Callback routine requested an abort */define SQLITE_BUSY 5 /* The database file is locked */define SQLITE_LOCKED 6 /* A table in the database is locked */define SQLITE_NOMEM 7 /* A malloc() failed */define SQLITE_READONLY 8 /* Attempt to write a readonly database */define SQLITE_INTERRUPT 9 /* Operation terminated by sqlite_interrupt() */define SQLITE_IOERR 10 /* Some kind of disk I/O error occurred */define SQLITE_CORRUPT 11 /* The database disk image is malformed */define SQLITE_NOTFOUND 12 /* (Internal Only) Table or record not found */define SQLITE_FULL 13 /* Insertion failed because database is full */define SQLITE_CANTOPEN 14 /* Unable to open the database file */define SQLITE_PROTOCOL 15 /* Database lock protocol error */define SQLITE_EMPTY 16 /* (Internal Only) Database table is empty */define SQLITE_SCHEMA 17 /* The database schema changed */define SQLITE_TOOBIG 18 /* Too much data for one row of a table */define SQLITE_CONSTRAINT 19 /* Abort due to contraint violation */define SQLITE_MISMATCH 20 /* Data type mismatch */define SQLITE_MISUSE 21 /* Library used incorrectly */define SQLITE_NOLFS 22 /* Uses OS features not supported on host */define SQLITE_AUTH 23 /* Authorization denied */define SQLITE_ROW 100 /* sqlite_step() has another row ready */define SQLITE_DONE 101 /* sqlite_step() has finished executing */ 執(zhí)行 SQL 語句 typedef int (*sqlite_callback)(void*,int,char**, char**)。 int sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void*, char**)。sqlite3_exec 函數(shù)依然像它在SQLite2中一樣承擔(dān)著很多的工作. 該函數(shù)的第二個參數(shù)中可以編譯和執(zhí)行零個或多個SQL語句. 查詢的結(jié)果返回給回調(diào)函數(shù). 更多地信息可以查看API 參考.在SQLite3里,sqlite3_exec一般是被準(zhǔn)備SQL語句接口封裝起來使用的. typedef struct sqlite3_stmt sqlite3_stmt。 int sqlite3_prepare(sqlite3*, const char*, int, sqlite3_stmt**, const char**)。 int sqlite3_prepare16(sqlite3*, const void*, int, sqlite3_stmt**, const void**)。 int sqlite3_finalize(sqlite3_stmt*)。 int sqlite3_reset(sqlite3_stmt*)。sqlite3_prepare 接口把一條SQL語句編譯成字節(jié)碼留給后面的執(zhí)行函數(shù). 使用該接口訪問數(shù)據(jù)庫是當(dāng)前比較好的的一種方法.sqlite3_prepare() 處理的SQL語句應(yīng)該是UTF8編碼的. 而sqlite3_prepare16() 則要求是UTF16編碼的. 輸入的參數(shù)中只有第一個SQL語句會被編譯. 第四個參數(shù)則用來指向輸入?yún)?shù)中下一個需要編譯的SQL語句存放的SQLite statement對象的指針, 任何時候如果調(diào)用 sqlite3_finalize() 將銷毀一個準(zhǔn)備好的SQL聲明. 在數(shù)據(jù)庫關(guān)閉之前,所有準(zhǔn)備好的聲明都必須被釋放銷毀. sqlite3_reset() 函數(shù)用來重置一個SQL聲明的狀態(tài),使得它可以被再次執(zhí)行.SQL聲明可以包含一些型如? 或 ?nnn 或 :aaa的標(biāo)記, 其中nnn 是一個整數(shù),aaa 是一個字符串. 這些標(biāo)記代表一些不確定的字符值(或者說是通配符),可以在后面用sqlite3_bind 接口來填充這些值. 每一個通配符都被分配了一個編號(由它在SQL聲明中的位置決定,從1開始),此外也可以用 nnn 來表示 ?nnn 這種情況. 允許相同的通配符在同一個SQL聲明中出現(xiàn)多次, 在這種情況下所有相同的通配符都會被替換成相同的值. 沒有被綁定的通配符將自動取NULL值. int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*))。 int sqlite3_bind_double(sqlite3_stmt*, int, double)。 int sqlite3_bind_int(sqlite3_stmt*, int, int)。 int sqlite3_bind_int64(sqlite3_stmt*, int, long long int)。 int sqlite3_bind_null(sqlite3_stmt*, int)。 int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*))。 int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int n, void(*)(void*))。 int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*)。以上是 sqlite3_bind 所包含的全部接口,它們是用來給SQL聲明中的通配符賦值的. 沒有綁定的通配符則被認(rèn)為是空值. 綁定上的值不會被sqlite3_reset()函數(shù)重置. 但是在調(diào)用了sqlite3_reset()之后所有的通配符都可以被重新賦值.在SQL聲明準(zhǔn)備好之后(其中綁定的步驟是可選的), 需要調(diào)用以下的方法來執(zhí)行: int sqlite3_step(sqlite3_stmt*)。如果SQL返回了一個單行結(jié)果集,sqlite3_step() 函數(shù)將返回 SQLITE_ROW , 如果SQL語句執(zhí)行成功或者正常將返回 SQLITE_DONE , 否則將返回錯誤代碼. 如果不能打開數(shù)據(jù)庫文件則會返回 SQLITE_BUSY . 如果函數(shù)的返回值是 SQLITE_ROW, 那么下邊的這些方法可以用來獲得記錄集行中的數(shù)據(jù): const void *sqlite3_column_blob(sqlite3_stmt*, int iCol)。 int sqlite3_column_bytes(sqlite3_stmt*, int iCol)。 int sqlite3_column_bytes16(sqlite3_stmt*, int iCol)。 int sqlite3_column_count(sqlite3_stmt*)。 const char *sqlite3_column_decltype(sqlite3_stmt *, int iCol)。 const void *sqlite3_column_decltype16(sqlite3_stmt *, int iCol)。 double sqlite3_column_double(sqlite3_stmt*, int iCol)。 int sqlite3_column_int(sqlite3_stmt*, int iCol)。 long long int sqlite3_column_int64(sqlite3_stmt*, int iCol)。 const char *sqlite3_column
點(diǎn)擊復(fù)制文檔內(nèi)容
外語相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1