使用VS2012編譯SQLite
阿新 • • 發佈:2019-02-11
最近工作的過程中需要用到SQLite,官網上主要提供的是編譯好的版本,如果需要了解原始碼需要自己編譯,這裡將編譯的相關方法分享出來,希望對大家有用!
1.下載SQLite
2.建立工程
1)開啟VS2012,新建一個Win32的動態庫的空專案。
2)向工程新增檔案
解壓sqlite-src-3080900.zip,從Src目錄下獲取除test*.*
tclsqlite.c,lempar.c的檔案,ext\rtree目錄下rtree.c rtree.h、sqlite3rtree.h,新增到工程中;解壓sqlite-preprocessed-3080900.zip,獲取keywordhash.h、opcodes.c
、opcodes.h、 parse.c parse.h、sqlite3.h新增到工程中。
3)工程配置
解壓sqlite-shell-win32-x86-3080900.zip,獲取sqlite3.def,將sqlite3.def檔案,放在和工程檔案同級目錄下,在聯結器->輸入->模組定義檔案,輸入sqlite3.def。
在C/C++->預處理->巨集定義,設定下面巨集定義:SQLITE_ENABLE_COLUMN_METADATA、SQLITE_CORE、SQLITE_ENABLE_RTREE
3.編譯,OK
測試程式碼如下:
#include <iostream> #include "sqlite3.h" #include "sqliteInt.h" using namespace std; int main() { string strFileName = "../DataBase/sqliteTest.db"; sqlite3 *pDb = NULL; int errCode; errCode = sqlite3_open(strFileName.c_str(), &pDb); if (SQLITE_OK != errCode) { cout<<"開啟資料庫失敗!!"<<endl; sqlite3_close(pDb); return 0; } char *pzsErrMsg = NULL; //儲存錯誤資訊 //建立一個表,如果表存在,則不建立,將錯誤資訊儲存在pzsErrMsg中 char *sql = "CREATE TABLE MyFirstSql( \ ID INTEGER PRIMARY KEY, \ SensorIDINTEGER, \ SiteNumINTEGER, \ Time VARCHAR(12), \ SensorParamenterREAL);"; errCode = sqlite3_exec(pDb, sql, 0, 0, &pzsErrMsg); if (SQLITE_OK != errCode) { cout<<pzsErrMsg<<endl; } sql = "INSERT INTO MyFirstSql(SensorDataVALUES(NULL, 1, 1, '201004111206', 18.9));"; errCode = sqlite3_exec(pDb, sql, 0, 0, &pzsErrMsg); if (SQLITE_OK != errCode) { cout<<pzsErrMsg<<endl; return 0; } return 1; }