最近用到SQLite数据库,刚开始想用ADO来搞,毕竟经常用,结果发现还挺麻烦,要装SQLite的ODBC驱动,装了以后还是连不上,听说这SQLite是开源项目,可以将开发库引入项目来直接操作,就在网上找了找对应封装好的库来使用(么办法,不想造轮子,况且网上的大牛多得是,人家造的肯定比自己好),找到了codeproject上的CppSQLite3这个封装库,看了看带的例子,迅速就可以上手使用,效果还不错。貌似,一切都是那么美好。忽然想到一个问题,这数据库没有密码吗?谁都可以访问吗?当然不可能,好吧,网上继续搜,sqlite3_key和sqlite3_rekey这两个函数出现了。然而我们的CppSQLite3封装类中没有这两个东西,几经折腾才知道SQLite3发布版中没有实现加密,又听说有个wxSQlite版可以,就下载下来,直接编译,提示几个头文件找不到,一查才知道还要安装什么wxWidgets,哎最烦这种动不动就要安装个什么东西的了。继续找,不经意间,发现一篇文章,很轻松的就编译出了带加密功能的sqlite库,再配合我们的CppSQLite3就完美了(什么?怎么配合?直接把原有的sqlite3.h,lib,dll替换成我们下边编译的就好啦)。好了,说了一堆废话,下边切入正题。
SQLite 3开源发布版不带加密功能,导出头文件中有sqlite3_key和sqlite3_rekey的定义,注释中说没有对应的实现(有加密实现的版本还需要在预编译中定义预处理宏SQLITE_HAS_CODEC才能开启这几个函数的功能)