電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 154|回復(fù): 0
收起左側(cè)

如何用C語言操作sqlite3,一文搞懂

[復(fù)制鏈接]

317

主題

317

帖子

3149

積分

四級(jí)會(huì)員

Rank: 4

積分
3149
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-10-2 11:50:00 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
點(diǎn)擊左上方藍(lán)色“一口Linux”,選擇“設(shè)為星標(biāo)
第一時(shí)間看干貨文章
?【干貨】嵌入式驅(qū)動(dòng)工程師學(xué)習(xí)路線?【干貨】Linux嵌入式知識(shí)點(diǎn)-思維導(dǎo)圖-免費(fèi)獲取?【就業(yè)】一個(gè)可以寫到簡歷的基于Linux物聯(lián)網(wǎng)綜合項(xiàng)目?【就業(yè)】找工作簡歷模版




嵌入式數(shù)據(jù)庫sqlite3【基礎(chǔ)篇】-基本命令操作,小白一看就懂

嵌入式數(shù)據(jù)庫sqlite3【進(jìn)階篇】-子句和函數(shù)的使用,小白一文入門
sqlite3編程接口非常多,對于初學(xué)者來說,我們暫時(shí)只需要掌握常用的幾個(gè)函數(shù),其他函數(shù)自然就知道如何使用了。
數(shù)據(jù)庫本篇假設(shè)數(shù)據(jù)庫為my.db,有數(shù)據(jù)表student。
nonamescore4一口Linux89.0創(chuàng)建表格語句如下:
CREATE TABLE  IF NOT EXISTS student (no integer primary key, name text, score real);
常用函數(shù)sqlite3_openint   sqlite3_open(char  *path,   sqlite3 **db);
功能:
    打開sqlite數(shù)據(jù)庫
參數(shù):
path: 數(shù)據(jù)庫文件路徑
db: 指向sqlite句柄的指針,后面對數(shù)據(jù)庫所有的操作都要依賴這個(gè)句柄
返回值:
成功返回0,失敗返回錯(cuò)誤碼(非零值)
sqlite3_closeint   sqlite3_close(sqlite3 *db);
功能:
關(guān)閉sqlite數(shù)據(jù)庫      
返回值:
成功返回0,失敗返回錯(cuò)誤碼
const  char  *sqlite3_errmsg(sqlite3 *db);
功能:
打印錯(cuò)誤信息        
返回值:
返回錯(cuò)誤信息
不使用回調(diào)函數(shù)執(zhí)行SQL語句sqlite3_get_table
int   sqlite3_get_table(sqlite3 *db, const  char  *sql,  char ***resultp,  int*nrow,  int *ncolumn, char **errmsg);
功能:
執(zhí)行SQL操作
參數(shù):
db:數(shù)據(jù)庫句柄
sql:SQL語句
resultp:用來指向sql執(zhí)行結(jié)果的指針
nrow:滿足條件的記錄的數(shù)目
ncolumn:每條記錄包含的字段數(shù)目
errmsg:錯(cuò)誤信息指針的地址
返回值:
成功返回0,失敗返回錯(cuò)誤碼
舉例下面比如我們要顯示student表中所有的數(shù)據(jù)信息,我們就可以利用sqlite3_get_table()執(zhí)行語句:
select * from student
實(shí)現(xiàn)代碼如下:
void do_show_sample(sqlite3 *db)
{
  char **result, *errmsg;
int nrow, ncolumn, i, j, index;
if (sqlite3_get_table(db, "select * from student", &result, &nrow, &ncolumn, &errmsg) != 0)
{
  printf("error : %s
", errmsg);
  sqlite3_free(errmsg);
}
index = ncolumn;
for (i=0; ifor (j=0; jprintf("%-8s : %-8s
", result[j], result[index]);   
   index++;
  }
  printf("************************
");
}
sqlite3_free_table(result);
return;
}
假定當(dāng)前的表格的數(shù)據(jù)信息如下:
nonamescore4一口Linux77.05一口peng88.06一口wang99.07一口網(wǎng)66.0關(guān)于這個(gè)函數(shù)中出現(xiàn)的這些參數(shù)的具體含義,我們可以見下圖:
sqlite3編程接口非常多,對于初學(xué)者來說,我們暫時(shí)只需要掌握常用的幾個(gè)函數(shù),其他函數(shù)自然就知道如何使用了。
數(shù)據(jù)庫本篇假設(shè)數(shù)據(jù)庫為my.db,有數(shù)據(jù)表student。
nonamescore4一口Linux89.0創(chuàng)建表格語句如下:
CREATE TABLE  IF NOT EXISTS student (no integer primary key, name text, score real);
常用函數(shù)sqlite3_openint   sqlite3_open(char  *path,   sqlite3 **db);
功能:
    打開sqlite數(shù)據(jù)庫
參數(shù):
path: 數(shù)據(jù)庫文件路徑
db: 指向sqlite句柄的指針
返回值:
成功返回0,失敗返回錯(cuò)誤碼(非零值)
sqlite3_closeint   sqlite3_close(sqlite3 *db);
功能:
關(guān)閉sqlite數(shù)據(jù)庫      
返回值:
成功返回0,失敗返回錯(cuò)誤碼
const  char  *sqlite3_errmsg(sqlite3 *db);
功能:
打印錯(cuò)誤信息        
返回值:
返回錯(cuò)誤信息
不使用回調(diào)函數(shù)執(zhí)行SQL語句sqlite3_get_table
int   sqlite3_get_table(sqlite3 *db, const  char  *sql,  char ***resultp,  int*nrow,  int *ncolumn, char **errmsg);
功能:
執(zhí)行SQL操作
參數(shù):
db:數(shù)據(jù)庫句柄
sql:SQL語句
resultp:用來指向sql執(zhí)行結(jié)果的指針
nrow:滿足條件的記錄的數(shù)目
ncolumn:每條記錄包含的字段數(shù)目
errmsg:錯(cuò)誤信息指針的地址
返回值:
成功返回0,失敗返回錯(cuò)誤碼
舉例下面比如我們要顯示student表中所有的數(shù)據(jù)信息,我們就可以利用sqlite3_get_table()執(zhí)行語句:
select * from student
實(shí)現(xiàn)代碼如下:
void do_show_sample(sqlite3 *db)
{
  char **result, *errmsg;
int nrow, ncolumn, i, j, index;
if (sqlite3_get_table(db, "select * from student", &result, &nrow, &ncolumn, &errmsg) != 0)
{
  printf("error : %s
", errmsg);
  sqlite3_free(errmsg);
}
index = ncolumn;
for (i=0; ifor (j=0; jprintf("%-8s : %-8s
", result[j], result[index]);   
   index++;
  }
  printf("************************
");
}
sqlite3_free_table(result);
return;
}
假定當(dāng)前的表格的數(shù)據(jù)信息如下:
nonamescore4一口Linux77.05一口peng88.06一口wang99.07一口網(wǎng)66.0關(guān)于這個(gè)函數(shù)中出現(xiàn)的這些參數(shù)的具體含義,我們可以見下圖:

發(fā)表回復(fù)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表