C語言使用sqlite3資料庫【第三節】

來源:互聯網
上載者:User

標籤:font   ack   from   文章   main   sqlite   清除   參數   pen   

int sqlite3_get_table(  sqlite3 *db,          /* 資料庫控制代碼 */  const char *zSql,     /* SQL 陳述式 */  char ***pazResult,    /* 查詢結果 一大堆的一維數組*/  int *pnRow,           /* 記錄條數 也就是多少行*/  int *pnColumn,        /* 欄位數 也就是多少列 不過資料也是根據這個來定位的 例如:第一行:1,2,3 那麼這個數值預設就是3,因為第一行是欄位名,取的自然是列數,那麼怎麼取各個資料的位                           置呢?答:從下一行開始 例如 4 就是第一個資料了,然後依次從左向右的移動,數值發生改變,形成了資料定位!個人理解,大神勿噴!*/  char **pzErrmsg       /* 錯誤資訊 跟前面errmsg一樣 */);sqlite3_free_table(char **result);//釋放查詢的緩衝

那麼大家請看以下的源碼注釋:

# include <stdio.h>
# include "sqlite3.h"
# include <stdlib.h>
int main(void)
{
int i;
int j;
sqlite3 *db;//建立一個sqlite3類型的指標db!可以當做資料庫的操作控制代碼。
//沒有這個控制代碼那麼所有的sqlite3函數都沒有任何實際意義
const char *SQL1="insert into sjk values(1,‘myd‘,‘2013-10-9‘);";//將SQL語句賦值在變數裡!
const char *SQL2="insert into sjk values(2,‘myd‘,‘2013-10-9‘);";//SQL語句我就不多說了。
//從資料庫查詢資料
const char *SQL3="select * from sjk;";//這裡是重點我們在最下面可以看到回呼函數的用法!
char *errmsg=0;
char** pResult;
int nRow;
int nCol;
int Feedback = sqlite3_open("sqlite3.db", &db);
//開啟指定的資料庫檔案,如果不存在將建立一個同名的資料庫檔案,並返回給db控制代碼值。
if( Feedback != SQLITE_OK )
{
printf("沒有開啟名為:sqlite3.db 的資料庫\n 原因是:%s\n", sqlite3_errmsg(db));
system("pause");
//sqlite3_errmsg()是返回錯誤後的提示資訊!參數是資料庫的操作控制代碼。
sqlite3_close(db);
//sqlite3_close()是關閉指定資料庫控制代碼的資料庫!
exit(-1);//非正常退出!
}
else printf("成功開啟或成功建立 名為:sqlite3.db !\n");
sqlite3_exec(db,"create table sjk(id integer,name text,birthday blob)",0,0,&errmsg);//建立表
sqlite3_exec(db,SQL1,0,0,&errmsg);//插入資料1
sqlite3_exec(db,SQL2,0,0,&errmsg);//插入資料2
printf("插入資料成功\n");
Feedback = sqlite3_get_table(db,SQL3,&pResult,&nRow,&nCol,&errmsg);//查詢資料將資料返回到&pResult
int nIndex = nCol; //在這篇文章開始之前我就做過注釋解析,請查看,然後分析為什麼這麼做?
printf("共有%d列/n",nIndex);//查出預設欄位數相當於列數
for(i=0;i<nRow;i++)//查詢第幾行的迴圈
{
for(j=0;j<nCol;j++)//查詢一行裡面的資料迴圈
{
printf("%s=%s\n",pResult[j],pResult[nIndex]);
++nIndex;//定位下一個資料,以便於欄位名符合!
}
}
sqlite3_free_table(pResult);//釋放記憶體
sqlite3_close(db);//關閉資料庫
db = 0;//清除資料庫控制代碼
printf("資料庫關閉成功!\n");
system("pause");//暫停DOS以便於查看
return 0;
}

那麼本教程的基礎篇就在這裡告一段落!
然而有一些人問我,說為什麼從第二節課開始我就一直用原始碼和注釋為大家講解呢?
也不是誇大家,我問問你,如果你沒有學會SQL語句還會考慮sqlite應用於哪個平台?
如果你不會C語言,那麼你還會用C語言來操作sqlite嗎?所以很多基礎的問題我就不給大家講解了。
那麼下一章,我將為大家講解中級篇。來用它做一些DOS文字遊戲!

C語言使用sqlite3資料庫【第三節】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.