以下是我的編譯過程,可能會對妳有所幫助:
1).打開VC並創建壹個名為sqlite3的新“Win32動態鏈接庫”項目。
2).在下壹個對話框中,選擇“壹個空DLL項目”並單擊“完成”-& gt;好
3).全部復制*。c *。h *。將源代碼中的def添加到項目文件夾中。
4).添加所有的*。您下載到項目源文件中的SQLite源文件中的c文件。
註意不要在這裏添加shell.c和tclsqlite.c文件。
5).將sqlite源文件中的sqlite3.def文件添加到項目的源文件中。
6).添加所有的*。下載到頭文件的SQLite源文件中的h文件。
7).開始編譯和構建(F7)。
也許妳會在這裏遇到壹個錯誤:
e:\ zieckey \ SQLite \ SQLite 3 \ SQLite 3 ext . h(22):致命錯誤C1083:無法打開包含文件:“sqlite3.h”:沒有這樣的文件或目錄
經檢查發現,源代碼中包含的所有sqlite3.h都標有# include
這意味著編譯器在系統的默認路徑中搜索,因此當然無法搜索到頭文件sqlite3.h。
此時可以改為# include“sqlite3 . h”讓編譯器在項目路徑中搜索。
但是如果有其他地方也使用# include
好吧,妳能做到的。選擇:工具-& gt;選擇...-& gt;導演系列
在下面的Directeries選項中輸入sqlite3.h的路徑,這是您的項目目錄。
加完了,編譯壹下就行了。
最後,在項目目錄的調試目錄中生成以下兩個重要文件:
動態鏈接庫文件sqlite3.lib和導入庫文件sqlite3.lib
2.使用動態鏈接庫
讓我們寫壹個程序來測試動態鏈接庫。
在VC下創建壹個空的Win32控制臺應用程序。項目名稱為TestSqliteOnWindows。
新建壹個test.cpp的C++源程序,源代碼如下:
//名稱:test.cpp
//此程序用於測試sqlite3的C/C++ API。很簡單,哈!
//作者:zieckey
//數據:2006/11/28
# include & ltstdio.h & gt
# include & ltstdlib.h & gt
#包含“sqlite3.h“
#define _DEBUG_
int main(void)
...{
sqlite3 * db = NULL
char * zerm SG = 0;
int rc
RC = sqlite3 _ open(“zieckey . db“,& ampdb);//打開指定的數據庫文件。如果不存在,將創建壹個同名的數據庫文件。
中頻(rc)
...{
fprintf(stderr,“無法打開數據庫:%s“,sqlite3 _ errmsg(db));
sqlite3 _ close(db);
返回(1);
}
else printf(“您已經成功打開了壹個名為zieckey.db的sqlite3數據庫!恭喜妳!玩得開心!^-^ ");
//創建壹個表。如果表存在,不要創建它,給出提示並將其存儲在zErrMsg中。
char *sql =“創建表sensor data(ID整數主鍵,SensorID整數,SiteNum整數,Time VARCHAR(12),sensor parameter REAL);“;
sqlite3 _ exec(db,sql,0,0 & amp;zErrMsg);
#ifdef _DEBUG_
printf(“zerm SG = % s“,zerm SG);
#endif
//插入數據
SQL =“INSERT INTO“SensorData“值(NULL,1,1,‘200605011206‘,18.9);“;
sqlite3 _ exec(db,sql,0,0 & amp;zErrMsg);
SQL =“INSERT INTO“sensor data“值(NULL,23,45,‘200605011306‘,16.4);“;
sqlite3 _ exec(db,sql,0,0 & amp;zErrMsg);
SQL =“INSERT INTO“sensor data“值(NULL,34,45,‘200605011306‘,15.4);“;
sqlite3 _ exec(db,sql,0,0 & amp;zErrMsg);
int nrow = 0,n column = 0;
char * * azResult//存儲結果的二維數組
//查詢數據
SQL =“SELECT * FROM sensor data“;
sqlite3 _ get _ table(db,sql,& ampaz result & amp;nrow & amp;n列,& ampzErrMsg);
int I = 0;
printf(“行:%d列=%d“,nrow,n column);
printf(“查詢結果為:“);
for(I = 0;我& lt(nrow+1)* n column;i++)
printf(“az result【% d】= % s“,I,az result【I】);
//刪除數據
sql =“從SensorData中刪除其中sensor id = 1;”;
sqlite3 _ exec(db,sql,0,0 & amp;zErrMsg);
#ifdef _DEBUG_
printf(“zerm SG = % s“,zerm SG);
#endif
SQL =“SELECT * FROM sensor data“;
sqlite3 _ get _ table(db,sql,& ampaz result & amp;nrow & amp;n列,& ampzErrMsg);
printf(“行:%d列=%d“,nrow,n column);
printf(“刪除後,查詢結果為:“);
for(I = 0;我& lt(nrow+1)* n column;i++)
printf(“az result【% d】= % s“,I,az result【I】);
//釋放azResult的內存空間。
sqlite3 _ free _ table(az result);
#ifdef _DEBUG_
printf(“zerm SG = % s“,zerm SG);
#endif
sqlite3 _ close(db);//關閉數據庫
返回0;
}
此外,將sqlite3.dll文件sqlite3.hsqlite3.lib復制到項目目錄。
最後,項目-》設置在鏈接選項卡中找到對象/庫模塊:在最後填寫sqlite3.lib。
如果已經有鏈接,請用空格分隔。
現在可以編譯了。
運行結果如下:
您已經成功打開了名為zieckey.db的sqlite3數據庫!
恭喜妳!玩得開心!-
zerm SG =(null)
行:3列=5
查詢的結果是:
az result【0】= ID
az result【1】= SensorID
az result【2】= SiteNum
az result【3】=時間
az result【4】=傳感器參數
az result【5】= 1
az result【6】= 1
az result【7】= 1
az result【8】= 200605011206
az result【9】= 18.9
az result【10】= 2
az result【11】= 23
az result【12】= 45
az result【13】= 200605011306
az result【14】= 16.4
az result【15】= 3
az result【16】= 34
az result【17】= 45
az result【18】= 200605011306
az result【19】= 15.4
zerm SG =(null)
行:2列=5
刪除後,查詢結果為:
az result【0】= ID
az result【1】= SensorID
az result【2】= SiteNum
az result【3】=時間
az result【4】=傳感器參數
az result【5】= 2
az result【6】= 23
az result【7】= 45
az result【8】= 200605011306
az result【9】= 16.4
az result【10】= 3
az result【11】= 34
az result【12】= 45
az result【13】= 200605011306
az result【14】= 15.4
zerm SG =(null)
按任意鍵繼續
在這個程序中,我們首先創建壹個數據庫,然後創建壹個新表,然後插入壹些數據。
再次檢查插入的數據是否正確,然後刪除壹些數據。刪除後,我們再次檢查。
我們發現我們的刪除操作也是成功的。
這個程序簡單地調用sqlite的函數接口來管理數據庫。
包括創建數據庫、創建表格、插入數據、查詢數據、刪除數據等。
註意:在上面的第五步中。
5).將sqlite源文件中的sqlite3.def文件添加到項目的源文件中。
這是必要的。添加sqlite3.def將生成壹個*。lib導入庫文件,這對於*非常重要。dll文件。否則,妳有壹個*就不那麽方便了。dll文件,因為這樣您只能通過動態加載dll來調用dll庫中的函數。
三、如何編譯SQLite的3.4.2版本(我的原創:2007年9月29日添加)
事實上,這個版本比以前的版本更容易編譯,也更簡單。
步驟如下:
1.在網站上下載源文件並選擇“SQLite-merging-3 _ 4 _ 2 . zip”。這個文件包含兩個文件,sqlite3.h和sqlite3.c。
2.下載“sqlitedll-3_4_2.zip”。輔助文件包含編譯後的DLL文件和DEF文件,DEF文件用於在編譯時生成lib文件。(答案)
3.打開VC並創建壹個名為sqlite3的新“Win32動態鏈接庫”項目。
4.在下壹個對話框中,選擇“壹個空DLL項目”並單擊“完成”-》;好
5.復制解壓縮的*。c *。h *。def到項目文件夾。
6.將下載的sqlite源文件中的sqlite3.c文件添加到項目的源文件中。
7.將sqlite源文件中的sqlite3.def文件添加到項目的源文件中。
8.將下載的sqlite源文件中的sqlite3.h文件添加到頭文件中。
9.開始編譯和構建(F7)。