QSqlite数据库加密方法

代码实现:

QSqlDatabase m_db = QSqlDatabase::addDatabase("SQLITECIPHER");
//必须使用对应的驱动

qDebug() << QSqlDatabase::drivers();

QString DB_FILE_PATH = QDir::currentPath() + "/" + m_strDbPath;

    //qDebug() << "DB File Path is:" << DB_FILE_PATH;
m_db = QSqlDatabase::addDatabase("SQLITECIPHER");//添加数据库驱动

m_db.setDatabaseName(DB_FILE_PATH);

m_db.setPassword("abcd");//设置密码

    m_db.setConnectOptions("QSQLITE_USE_CIPHER=chacha20; QSQLITE_ENABLE_REGEXP");//用于访问加密后的数据库
//m_db.setConnectOptions("QSQLITE_CREATE_KEY");
//设置连接方式(加密)
//m_db.setConnectOptions("QSQLITE_REMOVE_KEY");
//设置连接方式(解密)

注意:

	如果数据不被加密,不要用设置密码的语句和解密语句,会导致数据库打不开!数据加密仅一次,下次通过chacha20访问,解密也仅限一次。如需重新加密,先判断是否需要解密。

enum KEY_OP {
OPEN_WITH_KEY = 0,
CREATE_KEY,
UPDATE_KEY,
REMOVE_KEY
};
如果数据库已加密必须先执行此函数并输入正确密钥才能进行操作,如果数据库没有加密,执行此函数后进行数据库操作反而会出现“此数据库已加密或不是一个数据库文件”的错误。经测试,只能在新建数据库时设置密码!

改密码的话先open,再使用旧密码sqlite3_key ,最后在用新密码sqlite3_rekey

下来就是如何在QT里面进行配置了:
将下载加密的插件编译后:
QSqlite数据库加密方法_第1张图片

编译生成的debug和Release目录下

在这里插入图片描述
QSqlite数据库加密方法_第2张图片
拷贝到Qt对应的相同目录下:

QSqlite数据库加密方法_第3张图片
如果不存在可以创建;

QSqlite数据库加密方法_第4张图片
再将编译后的文件夹找到驱动位置;

将以下文件拷贝到相应的位置:
在这里插入图片描述
QSqlite数据库加密方法_第5张图片
分别是对应的DEBUG和RELEASE版本的内容。

你可能感兴趣的:(qt,qsl)