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里面进行配置了:
将下载加密的插件编译后:
在这里插入图片描述

编译生成的debug和Release目录下

在这里插入图片描述
在这里插入图片描述
拷贝到Qt对应的相同目录下:

在这里插入图片描述
如果不存在可以创建;

在这里插入图片描述
再将编译后的文件夹找到驱动位置;

将以下文件拷贝到相应的位置:
在这里插入图片描述
在这里插入图片描述
分别是对应的DEBUG和RELEASE版本的内容。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLite 是一种轻量级的关系型数据库系统,它被广泛应用于各种应用程序中。QSQLite 是 Qt 框架中的一个模块,它提供了与 SQLite 数据库交互的功能。使用 QSQLite,你可以在 Qt 应用程序中创建、访问和操作 SQLite 数据库。 要在 Qt 中使用 QSQLite,首先需要在项目中引入 QtSql 模块。然后,你可以通过创建一个 QSqlDatabase 对象来连接到 SQLite 数据库。下面是一个简单的示例代码: ```cpp #include <QCoreApplication> #include <QSqlDatabase> #include <QSqlQuery> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 连接到 SQLite 数据库 QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("path/to/database/file.db"); // 打开数据库 if (db.open()) { qDebug() << "Connected to the database!"; // 执行 SQL 查询 QSqlQuery query; if (query.exec("SELECT * FROM table")) { while (query.next()) { QString name = query.value(0).toString(); int age = query.value(1).toInt(); qDebug() << "Name:" << name << ", Age:" << age; } } else { qDebug() << "Query failed!"; } // 关闭数据库连接 db.close(); } else { qDebug() << "Failed to connect to the database!"; } return a.exec(); } ``` 在上面的示例中,我们使用 `QSqlDatabase` 类来连接到 SQLite 数据库,并使用 `QSqlQuery` 类执行 SQL 查询。你可以根据自己的需求执行各种 SQL 操作,例如插入、更新和删除数据等。 这只是一个简单的示例,你可以根据你的具体需求进行更复杂的操作。希望这能帮到你!如果有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值