sqlce与sqlite数据库的比较
最近由于项目需要, 要在wince4.2, wince5.0, mobile三种机型上面做大数据量的查询,初步估计在50W-500W条记录之间。
由于以前做mobile5的数据库项目主要是采用C#来写,而且数据量也顶多几万条,所以,为了确保项目后期少走弯路,我特意做了一下移动数据库性能测试。下面是这周的工作记录。供大家参考。
一. 由于wince4.2在打包OS的时候没有带.net的支持,所以,只能选用C++,也是为了各平台移植方便。
初步考虑采用sqlce 和 sqlite中的一种,sqlce是ms的东东,比较稳定。sqlite的开源的,使用方便,查询速度快。因此,两种我都做了一下测试。
1. sqlce开发环境:
EVC4 + sp4。 VS2005。 SqlCe 3.0
1). 先用VS2005写了一个小程序,生成50万条模拟数据。(在vs2005下操作sdf文件需要安装一个sqlce的包)
2). 在wince上使用sqlce的话,需要把以下文件copy到windows目录(我的wince没有自带sqlce包):
sqlcese30.dll,sqlceqp30.dll,sqlceoledb30.dll,sqlceme30.dll,sqlceer30CN.dll,并注册sqlceoledb30.dll方能正常操作数据库。(或者直接安装sql的cab包也行)
3). 开始编wince下的程序,操作sqlce数据库.
::CoInitializeEx(NULL,COINIT_MULTITHREADED);
//注册sqlce dll
LRESULT (CALLBACK* lpDllEntryPoint)(); //声明在CPP文件的前段
//注册
HINSTANCE hLib = LoadLibrary(L"\\Windows\\sqlceoledb30.dll");
if (hLib == NULL )
return ;
(FARPROC&)lpDllEntryPoint = GetProcAddress(hLib, _T("DllRegisterServer"));
(*lpDllEntryPoint)();
//OLEDB方式操作sqlce,都是一些COM相关的东东
HRESULT hr;
// TODO: Add your control notification handler code here
IDBInitialize *pIDBInitialize;
IDBCreateSession *pIDBCreateSession;
IDBCreateCommand *pIDBCreateCommand;
ICommandText *pICommandText;
IDBProperties *pIDBProperties;
IUnknown *pIUnknown;
DBPROP dbprop[1];
DB
相关文档:
Where is SQLite?
SQLite is available on the Android device itself. The executable is in the /system/bin directory of the device. You can see that this directory contains the shell commands like ls, ps, etc., as well as sqlite3, dalvikvm, and dexdump utilities.
Code Listing 1. Contents of system/ ......
SQL-92特性方面
正如前面提到的,SQLite不支持SQL-92的在很多企业数据库系统中可用的一些特性。
如:
外键约束(可解析的,但非强制)
很多ALTER TABLE特性
一些TRIGGER相关的特性
RIGHT和FULL OUTER JOIN
更新一个VIEW
GRANT和REVOKE
你可以在SQLite的主页上获取最新信息。
http://www.sqlite.org/omitted.html
......
前序:... 1
一、 版本... 1
二、 基本编译... 2
三、 SQLITE操作入门... 2
(1) 基本流程... 2
(2) SQL语句操作... 4
(3) 操作二进制... 8
(4) 事务处理... 10
四、 给数据库加密... 10
五、 后记... 25
前序:
Sqlite3 的确很好用。小巧、速度快。但是因为非微软的产品,帮助文档总觉得不够 ......
前序:
Sqlite3 的确很好用。小巧、速度快。但是因为非微软的产品,帮助文档总觉得不够。这些天再次研究它,又有一些收获,这里把我对 sqlite3 的研究列出来,以备忘记。
这里要注明,我是一个跨平台专注者,并不喜欢只用 windows 平台。我以前的工作就是为 unix 平台写代码。下面我所写的东西,虽然没有验证,但是我已尽 ......