SQLITE 源碼在自己工程中的使用


爲什麼會有這種需求,因爲sqlite的源碼是純C語言,對於不想額外安裝exe的場合,可以把源碼嵌入到任何你需要的工程中來使用。
首先,去官網下載到sqlite的源碼,http://www.sqlite.org/download.html。下載sqlite-amalgamation-3160200.zip版本就可以,其中需要的是.h和.c兩個文件。將這兩個文件分別加到你工程的頭文件和源文件內。
在需要使用的地方包含以下頭文件#include “sqlite3.h”

一、新建(打開)一個數據庫
函數:sqlite3_open();
返回值:函數執行結果
舉例:
    sqlite3 *db;
    int nResult = sqlite3_open("test.db", &db);
    if(nResult == SQLITE_OK)
    {
        qDebug() << "open success";
    }
    else {
        qDebug() << "open fail";
    }
如果test.db數據庫存在,則打開;如果不存在則新建一個名爲test的數據庫。


二、創建表
函數:sqlite3_exec();
返回值:函數執行結果
舉例:
    char* errmsg;
    char* strSql;

    nResult = sqlite3_exec(db,"create table stflag_tab(id integer primary key autoincrement,name varchar(100))",NULL,NULL,&errmsg);
    if(nResult == SQLITE_OK)
   {
        qDebug() << "create success";
    }
    else {
        qDebug() << "create fail";
    }
其中 errmsg可以返回執行錯誤的具體內容。


   也可這樣寫:
   strSql = “create table stflag_tab(id integer primary key autoincrement,name varchar(100))”;
   nResult = sqlite3_exec(db, strSql, NULL, NULL, &errmsg);


三、增加表中數據
函數:sqlite3_exec();
返回值:函數執行結果
舉例:
    strSql = "insert into stflag_tab values ('3', 'xx')";
    nResult = sqlite3_exec(db,strSql, NULL,NULL,&errmsg);
    nResult = sqlite3_exec(db,"insert into stflag_tab values ('4', 'yrx')", NULL,NULL,&errmsg);
    if(nResult == SQLITE_OK)
    {
        qDebug() << "insert OK";
    }
    else {
        qDebug() << "insert fail";
        qDebug() << errmsg;
    }


四、更改表中數據
函數:sqlite3_exec();
返回值:函數執行結果
舉例:
    strSql = "update stflag_tab set name ='ruwei' where id ='4'";
    nResult = sqlite3_exec(db,strSql, NULL,NULL,&errmsg);
    if(nResult == SQLITE_OK)
    {
        qDebug() << "update OK";
    }
    else {
        qDebug() << "update fail";
        qDebug() << errmsg;
    }


五、查詢數據
函數:sqlite3_get_table();sqlite3_free_table(),查詢完了要釋放
返回值:函數執行結果
舉例:
    char** pResult;

    int nrow;

    int ncolumn;

    strSql = "select * from stflag_tab ";
    nResult = sqlite3_get_table(db, strSql, &pResult, &nrow, &ncolumn, &errmsg);
    int nindex =ncolumn;
    if(nResult == SQLITE_OK)
    {
        qDebug() << "select OK";
        for(int i=0; i<nrow; i++)
        {
            for(int j=0; j< ncolumn;j++)
            {
                qDebug() << pResult[nindex++];
            }
        }
    }
    else {
        qDebug() << "select fail";
        qDebug() << errmsg;
    }
    sqlite3_free_table(p);


注意:
六、刪除數據
函數:sqlite3_exec();
返回值:函數執行結果
舉例:
    strSql = "DELETE FROM stflag_tab";
    nResult = sqlite3_exec(db,strSql, NULL,NULL,&errmsg);
    if(nResult == SQLITE_OK)
    {
        qDebug() << "delete OK";
    }
    else {
        qDebug() << "delete fail";
        qDebug() << errmsg;

    }


執行完所有操作後,記得關閉數據庫sqlite3_close(db)。


最後附上完整的Demo,是在Qt中編譯的,不過看一眼就能明白。上述代碼全部親自驗證通過。

http://download.csdn.net/detail/sinat_30440627/9739232

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章