SQLite在VC下的使用

一. 準備工作:
(1)在SQLite的官方網站下載Windows平臺下的3.5.0版本的SQLite, 下載地址:
http://www.sqlite.org/sqlitedll-3_5_0.zip 
壓縮文件中包含了sqlite3.dll和sqlite3.def文件. 用LIB命令生成用於連接(LINK)使用的lib文件:
LIB /DEF:sqlite3.def /machine:IX86
這樣就生成了:
sqlite3.lib 和 sqlite3.exp 兩個文件
sqlite3.lib文件是我們連接程序所使用的.
(2)在SQLite官方網站下載SQLite3的源程序, 下載地址:
http://www.sqlite.org/sqlite-source-3_5_0.zip 
解壓出sqlite3.h文件
(3)將(1)和(2)中得到的文件放在sqlite3_lib目錄(需要新建)中, 此時sqlite3_lib目錄下應該有:
sqlite3.h
sqlite3.dll
sqlite3.lib
sqlite3.def
等文件.

二. 編寫例子程序:
(1)打開VS2005創建一個新的項目:
項目類型: Visual C++
模板: Win32控制檯應用程序
將"準備工作"中建立的sqlite3_lib目錄複製到你的項目所在的目錄下, 然後在VS2005的IDE中對此項目進行如下的設置:
選擇菜單: "項目" -> "(項目名稱) 屬性...", 在彈出的對話框中選擇"配置屬性"->"鏈接器"->"輸入", 在"附加依賴項"中輸入./sqlite3_lib/sqlite3.lib;
然後繼續在對話框中選擇"配置屬性"->"C/C++"->"預編譯頭", 在"創建/使用預編譯頭"中選擇"不使用預編譯頭";
然後"確定".

(2)編寫代碼
#include <stdio.h>
#include <stdlib.h>

#include "./sqlite3_lib/sqlite3.h"

static int _callback_exec(void * notused,int argc, char ** argv, char ** aszColName)
{
int i;
for ( i=0; i<argc; i++ )
{
printf( "%s = %s/n", aszColName[i], argv[i] == 0 ? "NUL" : argv[i] );
}

return 0;
}

int main(int argc, char * argv[])
{
const char * sSQL = "select * from t1;";
char * pErrMsg = 0;
int ret = 0;
sqlite3 * db = 0;

ret = sqlite3_open("./prog.db", &db);

if ( ret != SQLITE_OK )
{
fprintf(stderr, "Could not open database: %s", sqlite3_errmsg(db));
exit(1);
}

printf("Successfully connected to database/n");

sqlite3_exec( db, sSQL, _callback_exec, 0, &pErrMsg );
if ( ret != SQLITE_OK )
{
fprintf(stderr, "SQL error: %s/n", pErrMsg);
sqlite3_free(pErrMsg);
}

sqlite3_close(db);
db = 0;

return 0;
}

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