WINCE下使用SQLite数据库

       SQLite是一个开源的跨平台的轻型数据库,WINCE本身也有一个自带的数据库SQLCE ,但占用的资源会比较大。最近项目中考虑用到 SQLite,因此特别研究了一下,下面介绍一下具体的移植方法。

一、下载SQLite源码

       去SQLite官网http://www.sqlite.org/download.htm下载最新的source code。我下载的是sqlite-amalgamation-3071401.zip。解压后会得得到四个文件(shell.c、sqlite3.c、sqlite3.h、sqlite3ext.h)。

二、编译生成WINCE下DLL

      1. 在VS2005下新建一个Win32智能设备项目,选择相应的SDK,并选择应用程序类型为DLL。

      2. 将sqlite-amalgamation-3071401.zip解压后的sqlite3.c、sqlite3.h文件拷贝到工程目录下并添加至工程目录。如下图所示。

            

       3.在预处理中增加SQLITE_ENABLE_RTREE和SQLITE_ENABLE_COLUMN_METADATA宏定义。如图所示:

           

        4.编译项目,会提示“error LNK2019: 无法解析的外部符号 localtime_s,该符号在函数 osLocaltime 中被引用”错误,此错误的解决方法是将localtime_s替换成_localtime64_s即可。

        5.编译成功后会发现目录下会生成SQLite.dll文件,但会发现没有lib文件,这样在使用这个DLL时是没法编译的,所以还需要导出.lib文件,解决方法是在SQLite官网上下载sqlite-dll-win32-x86-XXXXXX.zip文件,解压后将目录下的sqlite3.def文件拷贝到DLL工程目录,在项目属性--链接器--输入--模块定义文件中添加sqlite3.def,如下图所示,然后编译即可。

           

这样SQLite的编译工作就大功告成了。

三、WINCE 下SQLite测试

        新建一个SQLite测试程序,测试代码如下:       

#include <windows.h>

// sqlite3的回调函数
int SQLiteQueryResultCallBack( void * para, int n_column, char ** column_value, char ** column_name )

int main(int argc,char* argv[])
{
	sqlite3 * db = NULL; //声明sqlite关键结构指针
	int result;
	// 打开或创建数据库
	result = sqlite3_open("NAND2\\sqlite.db", &db );
	if( result != SQLITE_OK )
	{
		//数据库打开失败
		return -1;
	}
	char * errmsg = NULL;
	// 数据库操作代码
#if 1
	// 创建一个测试表,表名叫 MyTable,有2个字段: ID 和 name。其中ID是一个自动增加的类型,以后insert时可以不去指定这个字段,它会自己从0开始增加
	result = sqlite3_exec( db, "create table MyTable( ID integer primary key autoincrement, name nvarchar(32) )", NULL, NULL, &errmsg );
	if(result != SQLITE_OK )
	{
		printf("创建表失败,错误码:%d,错误原因:%s\n", result, errmsg );
	}
	// 插入记录
	result = sqlite3_exec( db, "insert into MyTable( name ) values ( '张三' )", 0, 0, &errmsg );
	if(result != SQLITE_OK )
	{
		printf("插入记录失败,错误码:%d,错误原因:%s\n", result, errmsg );
	}
	// 插入记录
	result = sqlite3_exec( db, "insert into MyTable( name ) values ( '李四' )", 0, 0, &errmsg );
	if(result != SQLITE_OK )
	{
		printf("插入记录失败,错误码:%d,错误原因:%s\n", result, errmsg );
	}
#endif
	// 开始查询数据库
	result = sqlite3_exec( db, "select * from MyTable", SQLiteQueryResultCallBack, NULL, &errmsg );
	// 关闭数据库
	sqlite3_close( db );

	return 0;
}

// sqlite3的回调函数
int SQLiteQueryResultCallBack( void * para, int n_column, char ** column_value, char ** column_name )
{
	printf( "******************************\n" );
	printf("记录包含 %d 个字段\n", n_column );
	for(int i = 0 ; i < n_column; i ++ )
	{
		printf( "字段名:%s 字段值:%s\n", column_name[i], column_value[i] );
	}
	printf( "******************************\n" );
	return 0;
}
四、SQLite可视化管理工具

        SQLite本身没有可视化管理工具,只提供了一个命令行的管理工具SQLite.exe。有一个第三方的可视化管理工具Sqlite Expert,用着还可以,下载地址: http://www.sqliteexpert.com/download.html

        

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
LabVIEW是一种图形化编程语言和开发环境,用于控制和测量应用程序的开发。它可以与各种数据库进行集成,包括SQLite数据库。 要在LabVIEW中使用SQLite数据库,您需要安装SQLite数据库驱动程序和相应的LabVIEW工具包。以下是使用SQLite数据库的一般步骤: 1. 安装SQLite数据库驱动程序:首先,您需要下载并安装SQLite数据库驱动程序。您可以从SQLite官方网站(https://www.sqlite.org/download.html)下载适合您操作系统的驱动程序。 2. 安装LabVIEW工具包:LabVIEW有一些第三方工具包可用于与SQLite数据库进行交互。您可以在LabVIEW Tools Network(https://www.ni.com/labview-tools-network)上搜索并下载适合您版本的SQLite工具包。 3. 创建数据库连接:在LabVIEW中,您可以使用SQLite数据库工具包提供的函数来创建与SQLite数据库的连接。您需要提供数据库文件的路径和名称,然后使用适当的函数来打开连接。 4. 执行SQL查询:一旦建立了数据库连接,您可以使用SQLite工具包提供的函数来执行SQL查询。您可以执行各种操作,如创建表、插入数据、更新数据和查询数据等。 5. 关闭数据库连接:在完成与数据库的交互后,确保使用适当的函数关闭数据库连接,以释放资源并确保数据的完整性。 请注意,LabVIEW中使用SQLite数据库的具体步骤可能会因LabVIEW版本和所使用SQLite工具包而有所不同。因此,建议您参考相关的LabVIEW和SQLite工具包文档以获取更详细的指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值