2.1 下載SQLite
從SQLite官方網(wǎng)站http://www.sqlite.org/download.html下載最新的源代碼,編寫(xiě)本文檔時(shí)的版本為3.7.16。一共包含如下幾個(gè)文件sqlite-amalgamation-3071602.zip,sqlite-dll-win32-x86-3071602.zip, sqlite-src-3071602.zip,然后解壓。
2.2 創(chuàng)建SQLite Dll工程
A、運(yùn)行VS2005,點(diǎn)擊文件(F)-> 新建()-> 項(xiàng)目(P),項(xiàng)目類(lèi)型為Visual C++ -> 智能設(shè)備 -> Win32智能設(shè)備項(xiàng)目,項(xiàng)目名稱(chēng)為sqlite。然后點(diǎn)擊確定。
B、在Win32 智能設(shè)備項(xiàng)目向?qū)?/B>中的平臺(tái)設(shè)置根據(jù)實(shí)際情況選擇,此處我們選擇EAC-0945。然后點(diǎn)擊下一步。
C、在應(yīng)用程序設(shè)置中,應(yīng)用程序類(lèi)型選擇DLL(D),附加選項(xiàng)選擇空項(xiàng)目(E),然后點(diǎn)擊完成。
D、復(fù)制sqlite-amalgamation-3071602目錄下的sqlite3.c,sqlite3.h,sqlite3ext.h到工程源文件目錄。
復(fù)制sqlite-src-3071602\ext\rtree目錄下的rtree.c,rtree.h,sqlite3rtree.h到工程源文件目錄。
復(fù)制sqlite-dll-win32-x86-3071602目錄下的sqlite3.def到工程源文件目錄。
然后在解決方案窗口,右鍵點(diǎn)擊Sqlite工程下的源文件,選擇添加->添加現(xiàn)有項(xiàng),加入工程目錄下的rtree.c和sqlite3.c。添加完畢后,工程窗口類(lèi)似如下:
A、修改sqlite3.c,將里面的localtime_s全部替換為_localtime64_s。
B、將工程屬性中的配置屬性->C/C++->高級(jí)->編譯為設(shè)置為編譯為C代碼(/TC),在預(yù)處理器->預(yù)處理器定義中增加SQLITE_ENABLE_COLUMN_METADATA。
在鏈接器->輸入->模塊定義文件中輸入sqlite3.def。
C、編譯工程,即可生成sqlite.dll和sqlite.lib
A、點(diǎn)擊文件(F)-> 新建()-> 項(xiàng)目(P),項(xiàng)目類(lèi)型為Visual C++ -> 智能設(shè)備 -> Win32智能設(shè)備項(xiàng)目,項(xiàng)目名稱(chēng)為sqlite3test。然后點(diǎn)擊確定。
B、在Win32智能設(shè)備向?qū)?/B>中平臺(tái)設(shè)置為EAC-0945,應(yīng)用程序類(lèi)型設(shè)置為控制臺(tái)應(yīng)用程序(O),然后點(diǎn)擊完成。
C、復(fù)制sqlite3.h,sqlite3.lib,sqlite3.dll到工程目錄下,并將sqlite3test.cpp中的文件內(nèi)容替換如下:
// sqlite3test.cpp : 定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
//
#include "stdafx.h"
#include <windows.h>
#include <commctrl.h>
#include "sqlite3.h"
int _tmain(int argc, _TCHAR* argv[])
{
sqlite3 *db = 0;
int rc;
char *sql;
rc = sqlite3_open("\\nandflash\\test.db", &db);
if(rc)
{
printf("Can't open database:%s\n", sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
// Create a table
sql = "CREATE TABLE SensorData( ID INTEGER PRIMARY KEY,SensorID INTEGER,SiteNum INTEGER,Time VARCHAR(12),SensorParameter REAL);";
sqlite3_exec( db , sql , 0 , 0 , 0);
// insert data record
sql = "INSERT INTO SensorData VALUES( NULL , 1 , 1 , '200605011206', 18.9 );" ;
sqlite3_exec( db , sql , 0 , 0 , 0);
sql = "INSERT INTO SensorData VALUES(NULL, 2, 1, '200605011207', 19.0);";
sqlite3_exec( db , sql , 0 , 0 , 0);
do{
// inquiry data
int i,j;
int row=0, col=0;
char **result;
sql = "SELECT * FROM SensorData ";
sqlite3_get_table( db , sql , &result , &row , &col , 0 );
printf("row:%d column=%d \n" , row , col);
for(i=0;i!=(row+1);i++)
{
for(j=0;j<col;j++)
printf("%s ",result[i*col+j]);
printf("\r\n");
}
sqlite3_free_table(result);
}while(0);
printf("Press Enter key to exit.\r\n");
c = getchar();
sqlite3_close(db);
return 0;
}
D、在項(xiàng)目屬性的配置屬性->鏈接器->輸入->附加依賴(lài)項(xiàng)中增加sqlite.lib,然后編譯工程。
E、將編譯所得的sqlite3test.exe和sqlite.dll復(fù)制到設(shè)備的\\NandFlash目錄,運(yùn)行sqlite3test.exe即可。
每運(yùn)行一次,表的記錄都會(huì)多2項(xiàng)。
運(yùn)行后,按Enter鍵即退出程序。
|