Sqlite 學習- 編譯sqlite靜態庫,供其他項目調用

來源:互聯網
上載者:User
下載sqlite的源碼,其中的sqlite3.c 源碼,sqlite3.h 為標頭檔。

可以先把sqlite編譯為靜態庫,然後就可以在其他項目中使用。這樣做的好處是不需要把測試程式與sqlite source混在一起,導致編譯緩慢,使用不方便。

Sqlite編譯

1 在vc ++ 中建立win32 Project ,在嚮導工具中選擇Applicationtype 為Static libray,Additional options 選擇空,add common header file 選擇空。

2 建立項目完成後在source 中添加 sqlite3.c 源碼,在 header files中添加 sqlite.h.

3 編譯項目,此時,供其他項目使用的靜態庫sqlite3.lib檔案已經產生。如果後面需要使用sqlite資料庫,只需要引入sqlite3.h標頭檔與sqlite3.lib就可以使用了。

Sqlite 樣本程式

1在vc ++ 中建立win32 Project  sqlitesample,在嚮導中選擇Console程式,其他一概選為空白。

引入sqlite.h 標頭檔。

2 在 main中的源碼如下

Sqlite 學習- 編譯sqlite靜態庫,供其他項目調用)下載sqlite的源碼,其中的sqlite3.c 源碼,sqlite3.h 為標頭檔。可以先把sqlite編譯為靜態庫,然後就可以在其他項目中使用。這樣做的好處是不需要把測試程式與sqlite source混在一起,導致編譯緩慢,使用不方便。Sqlite編譯1 在vc ++ 中建立win32 Project ,在嚮導工具中選擇Applicationtype 為Static libray,Additional options 選擇空,add common header file 選擇空。2 建立項目完成後在source 中添加 sqlite3.c 源碼,在 header files中添加 sqlite.h.3 編譯項目,此時,供其他項目使用的靜態庫sqlite3.lib檔案已經產生。如果後面需要使用sqlite資料庫,只需要引入sqlite3.h標頭檔與sqlite3.lib就可以使用了。Sqlite 樣本程式1在vc ++ 中建立win32 Project  sqlitesample,在嚮導中選擇Console程式,其他一概選為空白。引入sqlite.h 標頭檔。2 在 main中的源碼如下#include "stdafx.h"#include "../sqlitelib/sqlite3.h"#include "string.h"#pragma comment(lib, "../Debug/sqlitelib.lib") void doTest();int _tmain(int argc, _TCHAR* argv[]){    doTest();    return 0;}void doTest() {    sqlite3* conn = NULL;    const char* createTableSQL ="CREATE TABLE TESTTABLE (int_col INT, float_col REAL, string_col TEXT)";    const char* selectSQL = "SELECT * FROM TESTTABLE WHERE 1 = 0";    sqlite3_stmt* stmt = NULL;    int len = strlen(createTableSQL);    int result = sqlite3_open("E:\\Hbb0b0\\sqlitedb\\mytest.db",&conn);    sqlite3_stmt* stmt2 = NULL;    //1. 開啟資料庫        if (result != SQLITE_OK) {        sqlite3_close(conn);        return;    }        //2. 準備建立資料表,如果建立失敗,需要用sqlite3_finalize釋放sqlite3_stmt對象,以防止記憶體泄露。    if (sqlite3_prepare_v2(conn,createTableSQL,len,&stmt,NULL) != SQLITE_OK) {        if (stmt)            sqlite3_finalize(stmt);        sqlite3_close(conn);        return;    }    //3. 通過sqlite3_step命令執行建立表的語句。對於DDL和DML語句而言,sqlite3_step執行正確的傳回值    //只有SQLITE_DONE,對於SELECT查詢而言,如果有資料返回SQLITE_ROW,當到達結果集末尾時則返回    //SQLITE_DONE。    if (sqlite3_step(stmt) != SQLITE_DONE) {        sqlite3_finalize(stmt);        sqlite3_close(conn);        return;    }    //4. 釋放建立表語句對象的資源。    sqlite3_finalize(stmt);    printf("Succeed to create test table now.\n");    //5. 構造查詢表資料的sqlite3_stmt對象。    if (sqlite3_prepare_v2(conn,selectSQL,strlen(selectSQL),&stmt2,NULL)        != SQLITE_OK) {            if (stmt2)                sqlite3_finalize(stmt2);            sqlite3_close(conn);            return;    }}3 編譯運行後可以安裝firefox sqlite manager 查看最終產生mytest.db .對應的表已經產生成功。

 

 

3 編譯運行後可以安裝firefox sqlite manager 查看最終產生mytest.db .

對應的表已經產生成功。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.