基於嵌入式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頁面
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章