嵌入式数据库sqlce和sqlite的使用方法(sqlite)

 

二. 在wince上使用sqlite数据库:
 1. 环境:EVC4 + sp4
 1). 在 http://sqlite-wince.sourceforge.net/ 中下载 SQLite for Windows CE 的DLL 源代码.
 2). eVC里新建一个“WCE Dynamic-Link Library”工程,命名为:sqlite
  3). 在接下来的对话框中选择"An empty Windows CE DLL project",点击 FINISH,之后再点击 OK
  4). 将源码中所有的 *.c *.h *.def 复制到工程文件夹下
  5). 添加所有除shell.c和tclsqlite.c文件外所有文件到项目中。
  6). 编译生成sqlite.lib和sqlite.dll.

  2. 在 http://softvoile.com/development/CppSQLite3U/下载 高人用C++封装的sqlite的类,(基于上面生成的sqlite.lib)
    一般来讲,我们都会是先在windows上使用sqlite的数据库,并导入基础数据。然后把数据库copy到wince里,再操作。
     此类是封装的sqlite的unicode函数,能在windows下和wince下都正常使用,但有一点要注意:
如果要在windows下使用,因为VC6默认是建的_MBCS项目,而如果要调用unicode的函数,生成utf16数据以供在wince下能正常显示中文,则需要把项目的编译参数从_MBCS
改为:UNICODE _UNICODE。
  3. 这下我们就可以在evc4里面操作sqlite数据库了:
  //打开数据库

 CppSQLite3DB db;
 //打开或新建一个数据库
 db.open(L"//ding.db");

  //新建表
   db.execDML(L"create table sninfo(id nchar(12), area nvarchar(6), info nvarchar(60),source nchar(6), target nchar(6))");
   
  //查询
  CppSQLite3Query q = db.execQuery(L"select * from sninfo where area='广州区'");
  CString strTemp;
  while (!q.eof())
        {
   strTemp.Format(_T("%s-%s-%s-%s"),q.fieldValue(0),q.fieldValue(3),q.fieldValue(4),q.fieldValue(1));
   m_list.AddString(strTemp); //显示到listbox控件中
   q.nextRow();
  }
  q.finalize();

  db.close();
 
 4.对sqlite的数据库操作就介绍到这里,我目前也就用了这么多,更多的我也需要学习,在windows下用sqlite要注意一点的是,数据库的路径中不要含有中文字,否则会打开失败,如果非要用中文,那必须得转成utf-8才行,sqlite内部是通过utf-8来读取的。(wince下可以正常使用中文路径,因为wince默认就是unicode编码)

三. 后记
 对比了一下sqlce和sqlite在查询50W记录时的性能,都可以在2秒钟之内完成,(一开始我没建index,查了4分多钟,晕),一定记得要建索引哦。否则查询N慢。
 文笔不好,水平有限,记录的不是很清楚,写得不对的地方还请大家指正,一起学习一起进步。

你可能感兴趣的:(数据库,windows,sqlite,嵌入式,dll,WinCE)