2.1 下载SQLite
从SQLite官方网站http://www.sqlite.org/download.html下载最新的源代码,编写本文档时的版本为3.7.16。一共包含如下几个文件sqlite-amalgamation-3071602.zip,sqlite-dll-win32-x86-3071602.zip, sqlite-src-3071602.zip,然后解压。
2.2 创建SQLite Dll工程
A、运行VS2005,点击文件(F)-> 新建()-> 项目(P),项目类型为Visual C++ -> 智能设备 -> Win32智能设备项目,项目名称为sqlite。然后点击确定。
B、在Win32 智能设备项目向导中的平台设置根据实际情况选择,此处我们选择EAC-0945。然后点击下一步。
C、在应用程序设置中,应用程序类型选择DLL(D),附加选项选择空项目(E),然后点击完成。
D、复制sqlite-amalgamation-3071602目录下的sqlite3.c,sqlite3.h,sqlite3ext.h到工程源文件目录。
复制sqlite-src-3071602\ext\rtree目录下的rtree.c,rtree.h,sqlite3rtree.h到工程源文件目录。
复制sqlite-dll-win32-x86-3071602目录下的sqlite3.def到工程源文件目录。
然后在解决方案窗口,右键点击Sqlite工程下的源文件,选择添加->添加现有项,加入工程目录下的rtree.c和sqlite3.c。添加完毕后,工程窗口类似如下:
A、修改sqlite3.c,将里面的localtime_s全部替换为_localtime64_s。
B、将工程属性中的配置属性->C/C++->高级->编译为设置为编译为C代码(/TC),在预处理器->预处理器定义中增加SQLITE_ENABLE_COLUMN_METADATA。
在链接器->输入->模块定义文件中输入sqlite3.def。
C、编译工程,即可生成sqlite.dll和sqlite.lib
A、点击文件(F)-> 新建()-> 项目(P),项目类型为Visual C++ -> 智能设备 -> Win32智能设备项目,项目名称为sqlite3test。然后点击确定。
B、在Win32智能设备向导中平台设置为EAC-0945,应用程序类型设置为控制台应用程序(O),然后点击完成。
C、复制sqlite3.h,sqlite3.lib,sqlite3.dll到工程目录下,并将sqlite3test.cpp中的文件内容替换如下:
// sqlite3test.cpp : 定义控制台应用程序的入口点。
//
#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、在项目属性的配置属性->链接器->输入->附加依赖项中增加sqlite.lib,然后编译工程。
E、将编译所得的sqlite3test.exe和sqlite.dll复制到设备的\\NandFlash目录,运行sqlite3test.exe即可。
每运行一次,表的记录都会多2项。
运行后,按Enter键即退出程序。
|