前几天项目中的同事问我Wince里面使用数据库的问题,
鉴于此,
我查阅了相关资料,
了解到在Wince下面使用数据库主要有两个:sqlce和sqlite;前者是MS的产品,后者是一个开源的项目。
出于兴趣我首先研究了sqlite这个产品。
通过网上资料收集与整理,得出如下结论:
sqlite是一个开源的嵌入式关系数据库,它在2000年由D. Richard Hipp发布,它能减少应用程序管理数据的开销,可移植性好,很容易使用,很小,高效而且可靠。
sqlite嵌入到使用它的应用程序中,它们共用相同的进程空间,而不是单独的一个进程。从外部看,它并不像一个RDBMS,但在进程内部,它却是完整的,自包含的数据库引擎。
sqlite 的数据库权限只依赖于文件系统,没有用户帐户的概念。sqlite 有数据库级锁定,没有网络服务器。它需要的内存,其它开销很小,适合用于嵌入式设备。你需要做的仅仅是把它正确的编译到你的程序。
sqlite的核心大约有3万行标准C代码,这些代码都是模块化的,很容易阅读。
今天晚上,闲来无事,做了个sqlite的小实验,下载了一个sqlite.exe(一个已经编译好的文件),然后,在cmd里面启动这个程序,按照网上的样例,首先,自己建立一个数据库:D:/sqlite>sqlite3.exe mydb.db;在目录下发现了一个数据库文件出现,是那种两个齿轮形状的windows文件图标。接着,我创建了一个表:create table mytable (id int,name varchar,age int);之后,我插入了数据:insert into mytable (1,'kanon',25);最后,查询数据:select * from mytable;出现了我刚插入的数据。
啊,的确不错啊,只要这么一个小小的EXE,就可以从事关系数据库的工作了,这样一个程序,为嵌入式应用提供了很好的工具。
但,怎么样才能把它集成到自己的程序里面呢?
经过一番研究发现,只需要将源代码编译成DLL即可,这样就可以在自己的程序里面直接引用这个DLL文件,不就可以使用这里面得函数了吗?那不就可以代替sqlite.exe了吗?!
各有各的用处了:sqlite.exe可以用于代替access了,官方说法是sqlite支持最大数据库文件到2TB,而且其速度居然快感MysqL,最重要的是它兼容sql92标准。这样的好工具完全可以替代access,用作后台数据库了。sqlite.dll则可以集成进自己的应用程序里面,作为自己的程序一部分来使用(在windows平台下,若是其他平台,则需要编译为其他类型的文件了)。
原文链接:https://www.f2er.com/sqlite/203040.html