给 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 sqlite 增加加密功能