给 Qt sqlite 增加加密功能

匿名 (未验证) 提交于 2019-12-03 00:37:01
给 Qt sqlite 增加加密功能

・开源的sqlite中没有实现加密的功能,所以如果需要加密功能,需要自己实现 sqlite3_keysqlite3_rekey 等相关函数


修改qt源码

/**  * @brief 设置数据库密码  * @param key - 密码  */ virtual bool setKey(const QString& key);  /**  * @brief 重置数据库密码  * @param key - 密码  */ virtual bool resetKey(const QString& key);

打开 qtbase\src\sql\kernel\qsqldriver.cpp,给新增的两个接口增加一个默认实现

bool QSqlDriver::setKey(const QString&) {     return false; }  bool QSqlDriver::resetKey(const QString&) {     return false; }

/**  * @brief 设置数据库密码  * @param key - 密码  */ bool setKey(const QString& key);  /**  * @brief 重置数据库密码  * @param key - 密码  */ bool resetKey(const QString& key); 

bool QSQLiteDriver::setKey(const QString& key) {     Q_D(QSQLiteDriver);     if (d->access)     {         return (SQLITE_OK == sqlite3_key(d->access, key.toStdString().c_str(), key.toStdString().size()));     }      return false; }  bool QSQLiteDriver::resetKey(const QString& key) {     Q_D(QSQLiteDriver);     if (d->access)     {         return (SQLITE_OK == sqlite3_rekey(d->access, key.toStdString().c_str(), key.toStdString().size()));     }      return false; }

动态编译 Qt 5.6
静态编译 Qt 5.6

















































易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!