基于嵌入式Qt-4.7.0版本加密数据库sqlite3的插件方法

基于嵌入式Qt-4.7.0版本加密数据库sqlite3的插件方法

参考博客:https://www.devbean.net/2013/01/qt-sqlite-plugin-with-encryption-v02/
下载源码:https://github.com/devbean/QtCipherSqlitePlugin

一:编译

(1)使用qtcretor打开下载的源码,并配置构建套件

因为我的版本偏低所以有几个错误:

erorr1[sqlitecipher 68line]

以前:int result = sqlite3_exec(d->access, QString("SELECT count(*) FROM sqlite_master LIMIT 1").toUtf8().constData(), nullptr, nullptr, nullptr); \

修改:int result = sqlite3_exec(d->access, QString("SELECT count(*) FROM sqlite_master LIMIT 1").toUtf8().constData(), NULL, NULL, NULL); \
把所有nullptr替换为NULL


erorr2[sqlitecipher 467line]

const QString str = dateTime.toString(QStringLiteral("yyyy-MM-ddThh:mm:ss.zzz"));

const QString str = dateTime.toString("yyyy-MM-ddThh:mm:ss.zzz");

去掉所有QStringLiteral

const int nt = option.midRef(21).toInt(&ok);
const int nt = option.mid(21).toInt(&ok);
midRef由mid替换

最后编译通过


二 拷贝生成libsqlitecipher.so到你qt的安装目录一般是/usr/local/Trolltech/Qt-4.7.0/plugins/sqldrivers

sudo cp libsqlitecipher /usr/local/Trolltech/Qt-4.7.0/plugins/sqldrivers


三 验证加密和修改密码和删除密码

参考下载源码下test,运行之后生成的数据库为二进制,打开错误
(1)为已经存在数据库的加密
    QSqlDatabase dbconn = QSqlDatabase::addDatabase("SQLITECIPHER");
    dbconn.setDatabaseName("test.db");
    dbconn.setPassword("test");
    dbconn.setConnectOptions("QSQLITE_CREATE_KEY");
(2)删除密码
    QSqlDatabase dbconn = QSqlDatabase::addDatabase("SQLITECIPHER");
    dbconn.setDatabaseName("test.db");
    dbconn.setPassword("test");
    dbconn.setConnectOptions("QSQLITE_REMOVE_KEY");
(3)修改密码
    QSqlDatabase dbconn = QSqlDatabase::addDatabase("SQLITECIPHER");
    dbconn.setDatabaseName("test.db");
    dbconn.setPassword("test"); // the old password
    dbconn.setConnectOptions("QSQLITE_UPDATE_KEY=newtest"); // set new password
以上这些都可以参考github源码的wiki页面
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值