關於sqlite在VC中的配置和例子使用

2021-09-30 05:55:02 字數 3526 閱讀 2552

本人想在vc中初步學習一下sqlite資料庫的使用。但是遇到的問題重重。下面是我遇到的問題和解決方案:

在vc++中建立乙個工程,將檔案裡的**拷進工程中。

再次編譯,發現這時這時已經可以編譯通過。第乙個問題解決。

但是在build時出現了如下問題:

--------------------configuration: sqlite - win32 debug--------------------

linking...

sqlite.obj : error lnk2001: unresolved external symbol _sqlite3_free_table

sqlite.obj : error lnk2001: unresolved external symbol _sqlite3_get_table

sqlite.obj : error lnk2001: unresolved external symbol _sqlite3_exec

sqlite.obj : error lnk2001: unresolved external symbol _sqlite3_close

sqlite.obj : error lnk2001: unresolved external symbol _sqlite3_errmsg

sqlite.obj : error lnk2001: unresolved external symbol _sqlite3_open

debug/sqlite.exe : fatal error lnk1120: 6 unresolved externals

error executing link.exe.

sqlite.exe - 7 error(s), 0 warning(s)

這是因為在我的工程中沒有加進外部的lib檔案。於是我就在工程-》設定-》link中的lib中新增了sqlite3.lib。

但是這是會出現以下的錯誤:

linking...

link : fatal error lnk1104: cannot open file "sqlite3.lib"

error executing link.exe.

sqlite.exe - 1 error(s), 0 warning(s)

因為在我的工程中沒有這個外部檔案,鏈結時當然就找不到這個檔案了。所以會報錯。

於是我就在網上搜尋,找到了一下的方法解決:

下面我們就開始做我們的sqlite3.lib檔案

按下enter鍵時,我又遇到了乙個錯誤:

系統報錯說我缺少mspdb60.dll這個動態鏈結庫。這就鬱悶了,搞了那麼久現在還出現了軟體的問題,真的讓我太鬱悶了。於是我又到網上去尋找答案。說是自己下乙個放在d:/microsoft visual studio/vc98/bin目錄裡就行。於是我就按照他說的去做(因為是盜版的軟體上面的軟體一般會缺少,要自己加進去)。

這時在在命令列中執行上面的那條語句。結果居然成功的執行了。真是太高興了。這時我在d:/microsoft visual studio/vc98/bin目錄中真的找到了sqlite3.lib的檔案。於是我就把這個檔案拷到我的工作目錄中。

這時我已經把sqlite3.h sqlite3.lib sqlite3.dll檔案複製到我的工程目錄中。然後再把我們的工程build一次,結果成功的執行了。

下面是執行結果:

真是太高興了,我的第乙個sqlite程式測試成功。歷經萬難險阻,我終於會使用乙個簡單的sqlite程式。

下面是我的程式源**:

#include

#include

#include "sqlite3.h"   

int main( void )  

else   

//建立乙個表,如果該錶存在,則不建立,  

//返回值為sqlite_ok為成功  

//函式引數:第乙個為運算元據庫的指標,第二句為sql命令字串  

//第三個引數為callback函式,這裡沒有用,第四個引數為callback函式  

//第五個引數給出提示資訊,儲存在 zerrmsg 中  

char *sql = "create table sensordata(/

id integer primary key,/

sensorid integer,/

sitenum integer,/

time varchar(12),/

sensorparameter real/

);" ;  

sqlite3_exec( db , sql , 0 , 0 , &zerrmsg );   //執行sql語句

#ifdef _debug_  

printf("zerrmsg = %s /n", zerrmsg);   //預編譯錯誤。在debug模式下時會編譯,但不會進入到**中。

#endif  

//插入資料    

sql = "insert into /"sensordata/" values(null , 1 , 1 , '201009022115', 11 );" ;  

sqlite3_exec( db , sql , 0 , 0 , &zerrmsg );  

int nrow = 0, ncolumn = 0;  

char **azresult; //二維陣列存放結果  

//查詢資料  

/* 

int sqlite3_get_table(sqlite3*, const char *sql,char ***result , int *nrow , int *ncolumn ,char **errmsg ); 

result中是以陣列的形式存放你所查詢的資料,首先是表名,再是資料。 

nrow ,ncolumn分別為查詢語句返回的結果集的行數,列數,沒有查到結果時返回0 

*/ 

sql = "select * from sensordata ";  

sqlite3_get_table( db , sql , &azresult , &nrow , &ncolumn , &zerrmsg );  

int i = 0 ;  

printf( "row:%d column=%d /n" , nrow , ncolumn );  

printf( "/nthe result of querying is : /n" );  

for( i=0 ; i

printf( "azresult[%d] = %s/n", i , azresult[i] );  

//釋放掉    azresult 的記憶體空間  

sqlite3_free_table( azresult );  

#ifdef _debug_  

printf("zerrmsg = %s /n", zerrmsg);  

#endif  

sqlite3_close(db); //關閉資料庫  

return 0;  

}

SQLite在VC下的使用

一 sqlite簡介 sqlite 是用c語言編寫的開源資料庫,主要用於嵌入式,你也可以把它整合在自己的桌面程式中,也有人將其替代access,用作後台資料庫。sqlite 支援多數sql92標準,例如 索引 限制 觸發和檢視支援。支援 null integer real text 和 blob 資...

SQLite在VC下的使用

一 sqlite簡介 sqlite 是用c語言編寫的開源資料庫,主要用於嵌入式,你也可以把它整合在自己的桌面程式中,也有人將其替代access,用作後台資料庫。sqlite 支援多數sql92標準,例如 索引 限制 觸發和檢視支援。支援 null integer real text 和 blob 資...

SQLite在VC下的使用

自 http hi.baidu.com yeetoo blog item 2fde8813346efe836538db87.html 在vc中使用sqlite的例子 2007年09月26日 星期三 14 06 我打算在ponyse上把sqlite做為第乙個儲存 轉換資料 的資料庫,所以今天小試了一把...