wxsqlite3-2.1.0 请到 http://sourceforge.net/projects/wxcode/files/Components/wxSQLite3/ 上下载
说明:以下假设QT安装路径在:D:\Qt\4.7.3
1. 到相应的网站上下载相应的sqlite3.c 和sqlite3.h
http://sourceforge.net/projects/wxcode/files/Components/wxSQLite3/
我当前用的是:wxsqlite3-2.1.0
2. 将QT源码中QtSql工程中相应的sqlite3.c删除或备份,(不用最新的源码而是用库,也可以用源码自己编,但是我用的是已经编好的库)
3. sqlite3.h 替换为刚下载的,(wxsqlite3-2.1.0\wxsqlite3-2.1.0\sqlite3\include\目录下)
3. 在工程中打开sqlite3.h,并在其最前面添加代码:此宏是启用加密
#ifndef SQLITE_HAS_CODEC
#define SQLITE_HAS_CODEC
#endif
4. 将\wxsqlite3-2.1.0\sqlite3\secure\aes128\目录下的sqlite3.lib sqlite3.dll拷贝到 D:\Qt\4.7.3\lib\目录下
5. 在QtSql项目的工程属性(debug,release都要设置)链接中加上库文件D:\Qt\4.7.3\lib\sqlite3.lib
(注意不要加sqlite3.dll,否则会报错)
重新编译后,打包时要取最新的QtSqld4.dll 和QtSql4.dll,及其它的dll文件(在工程下面全部更新一下)
6. 对RICO工程的处理:
a. 在工程中增加sqlite3.h
(将wxsqlite3-2.1.0\wxsqlite3-2.1.0\sqlite3\include\sqlite3.h 文件拷到E:\Rico_1447_加解密\Src\Source\DataStore\目录下,
在文件的前面加上
#ifndef SQLITE_HAS_CODEC
#define SQLITE_HAS_CODEC
#endif
)
b. 在RCS工程属性的链接中增加对sqlite3.lib库的引用,此引用其实是找到QTDIR目录下的\lib\目录下的sqlite3.lib,:
c. 如果不是自己编译的QT,则要将加密版本的sqlite3.lib sqlite3.dll拷到D:\Qt\4.7.3\lib\目录下,
将QtSqld4.dll 和QtSql4.dll,QtCore4.dll,QtCored4.dll 拷到D:\Qt\4.7.3\bin\目录下,
QtXmld4.dll,QtNetworkd4.dll不知道要不要拷贝,看名字带d,应该只是调试的
d. 如果是自己的QT工程,则要将加密版本的sqlite3.dll拷贝到相应的工程目录下(如:E:\Rico_1447_加解密\Src\目录下)
7. 加密与解密的测试:
在头文件中包含sqlite3.h后,可以用
qsqldatabase.h文件中增加以下的声明:
QVariant QSqlDatabase::sqlite3handle() const; //add by qiuweilong 20120313
qsqldatabase.cpp 文件中增加以下的实现:
//add by qiuweilong 20120313 begin
QVariant QSqlDatabase::sqlite3handle() const
{
return d->driver->handle();
}
//add by qiuweilong end
//在要用到的文件的头部加上: #include "sqlite3.h" Q_DECLARE_METATYPE(sqlite3*) //以下代码获取数据库连接的指针: sqlite3 *sqlDb = NULL; QVariant vaTemp = m_db.sqlite3handle(); //m_db 为QSqlDatabase类型的私有成员,已经初始化sqlite3连接 sqlDb = vaTemp.value<sqlite3
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。