Sqlite   发布时间:2022-05-22  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了WINCE下使用SQLite数据库大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_262_0@ sqlite是一个开源的跨平台的轻型数据库,WINCE本身也有一个自带的数据库sqlCE ,但占用的资源会比较大。最近项目中用到sqlite,因此特别研究了一下,下面介绍一下具体的移植方法。

@H_262_0@一、下载sqlite源码

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

@H_262_0@二、编译生成WINCE下DLL

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

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

@H_262_0@

@H_262_0@ 3.在预处理中增加@R_909_5607@ENABLE_RTREE和@R_909_5607@ENABLE_columN_MetaDATA宏定义。如图所示:

@H_262_0@

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

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

@H_262_0@

@H_262_0@这样sqlite的编译工作就大功告成了。

@H_262_0@三、WINCE 下sqlite测试

@H_262_0@ 新建一个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 != @R_909_5607@OK )
	{
		//数据库打开失败
		return -1;
	}
	char * errmsg = NulL;
	// 数据库操作代码
#if 1
	// 创建一个测试表,表名叫 myTable,有2个字段: ID 和 name。其中ID是一个@R_644_8744@类型,以后insert时可以不去指定这个字段,它会自己从0开始增加
	result = sqlite3_exec( db,"create table myTable( ID @R_607_2428@ary key autoincrement,name nvarchar(32) )",NulL,&errMsg );
	if(result != @R_909_5607@OK )
	{
		printf("创建表失败,错误码:%d错误原因:%s\n",result,errmsg );
	}
	// 插入记录
	result = sqlite3_exec( db,"insert into myTable( name ) values ( '张三' )",&errMsg );
	if(result != @R_909_5607@OK )
	{
		printf("插入记录失败,错误码:%d错误原因:%s\n","insert into myTable( name ) values ( '李四' )",errmsg );
	}
#endif
	// 开始查询数据库
	result = sqlite3_exec( db,"SELEct * from myTable",sqlitequeryResultCallBACk,&errMsg );
	// 关闭数据库
	sqlite3_close( db );

	return 0;
}

// sqlite3的回调函数
int sqlitequeryResultCallBACk( void * para,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可视化管理工具 @H_262_0@ sqlite本身没有可视化管理工具,只提供了一个命令行的管理工具sqlite.exe。有一个第三方的可视化管理工具sqlite Expert,用着还可以,下载地址:http://www.sqliteexpert.com/download.html

大佬总结

以上是大佬教程为你收集整理的WINCE下使用SQLite数据库全部内容,希望文章能够帮你解决WINCE下使用SQLite数据库所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: