欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

SQLite第三課使用例子

1 打開(kāi)數(shù)據(jù)庫(kù)文件
? sqlite3* m_db = NULL;
? int ret = sqlite3_open_v2("test.db", &db, SQLITE_OPEN_READWRITE, NULL);
? if (ret != SQLITE_OK)
? {
??? return;
? }

目前創(chuàng)新互聯(lián)已為上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁(yè)空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、上猶網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

2 如果表不存在,創(chuàng)建表
char szCreateUserDataSql[1024] = "create table if not exists tb_user (id INTEGER ,\
??? type INTEGER,\
??? kind INTEGER)";

3 創(chuàng)建唯一的主鍵ID
char szCreateUserDataSql[1024] = "create table if not exists tb_user (id INTEGER PRIMARY KEY AUTOINCREMENT,\
??? type INTEGER,\
??? kind INTEGER)";

4 查詢(xún)
? char szSql[1024] = {0};
? sprintf(szSql, "select distinct * from tb_test");
? sqlite3_stmt* stmt = NULL;
? sqlite3_prepare(m_db, szSql, -1, &stmt, 0);
? while (sqlite3_step(stmt) == SQLITE_ROW)
? {
??? const unsigned char*? szPOIName = sqlite3_column_text(stmt, 0);
??? char szName[128] = {0};
??? if (szPOIName)
??? {
????? sprintf(szName, "%s", szPOIName);
??? }
??? int kx = sqlite3_column_int(stmt, 3);
??? float x = sqlite3_column_double(stmt, 5);
? }
? sqlite3_finalize(stmt);

5 獲取sql執(zhí)行失敗的錯(cuò)誤信息
char* errMsg = NULL;
char* szSql = "select * from address";
nRet = sqlite3_exec(pDB, szSql, NULL, NULL ,&errMsg);
if (nRet != SQLITE_OK)
{
?? cout<<errMsg<<endl;
?? sqlite3_free(errMsg);
}
注意:釋放errMsg指向的內(nèi)存
6 關(guān)閉數(shù)據(jù)庫(kù)
? sqlite3_close(db);

7迭代查詢(xún)
char* pszSql = "select * from tableA where id >= ?"

當(dāng)出現(xiàn)上面的sql語(yǔ)句的情況下,需要對(duì)?進(jìn)行填充,這個(gè)時(shí)候就會(huì)
調(diào)用sqlite3_bind_int函數(shù)對(duì)該?進(jìn)行填充

sqlite3_bind_int(stmt, 1, 2);

詳細(xì)的說(shuō)明:第二個(gè)參數(shù)表示對(duì)第一個(gè)?(可能有多個(gè)?),2表示填充到?
的值

對(duì)于使用回調(diào)和預(yù)編譯語(yǔ)句獲取記錄集的方式比較
回調(diào):一次性讀取所有的記錄集
預(yù)編譯語(yǔ)句:每次使用sqlite3_step獲取到一條記錄了數(shù)據(jù)

代碼:
??? sqlite3_stmt *stmt = NULL;
??? int ret = sqlite3_prepare();
??? ret = sqlite3_bind_int(stmt, 1, id);
??? ret = sqlite3_step(stmt);
??? const char *mst = sqlite3_errstr(ret);

分析:
1)
??? mst的錯(cuò)誤提示:library routine called out of sequence
通過(guò)網(wǎng)上搜索是多線程訪問(wèn)數(shù)據(jù)庫(kù)導(dǎo)致的問(wèn)題,結(jié)果通讀代碼,發(fā)現(xiàn)沒(méi)有多線程訪問(wèn)數(shù)據(jù)庫(kù),并且正常銷(xiāo)毀stmt對(duì)象

2)
??? 嘗試手動(dòng)執(zhí)行命令語(yǔ)句,出錯(cuò)提示如下:no such column:admin
說(shuō)明SQL語(yǔ)句有問(wèn)題,測(cè)試sqlite3_prepare函數(shù)的返回值,出錯(cuò)提示如下:SQL logic error or missing database。通過(guò)修改SQL語(yǔ)句,終于可以正常查詢(xún)。

總結(jié):sqlite3_prepare函數(shù)會(huì)分析SQL語(yǔ)句是否編寫(xiě)正確,如果不正確就會(huì)返回錯(cuò)誤,導(dǎo)致下面的查詢(xún)失敗

分享名稱(chēng):SQLite第三課使用例子
網(wǎng)站URL:http://www.chinadenli.net/article16/ihodgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管網(wǎng)站營(yíng)銷(xiāo)網(wǎng)站內(nèi)鏈動(dòng)態(tài)網(wǎng)站網(wǎng)站設(shè)計(jì)公司品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管