gpt4 book ai didi

c++ - 是否可以将 QSqlDatabase 与 SQLCipher 一起使用?

转载 作者:搜寻专家 更新时间:2023-10-30 20:40:29 25 4
gpt4 key购买 nike

我想在 Qt 中使用加密的 SQLite 数据库。是否可以通过QSqlDatabase 连接到数据库并使用SQLCipher 来加密或解密数据库?例如,我经常像这样连接到 SQLite 数据库文件:

QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLITE","Main_Connection" );
db.setDatabaseName( "Main.sqlite" );
db.open();

我想知道是否可以使用SQLCipher API解密数据库并使用Qt数据库模块连接和操作数据库?

最佳答案

由于 API 相同,您应该能够使用 SQLCipher 构建 Qt 的 SQLITE 驱动程序而无需修改。唯一需要注意的是,

  1. 库和头文件名相同,可用,并且
  2. 在访问任何数据之前,您使用 SQLCipher 的 PRAGMA 指令手动初始化加密参数

http://sqlcipher.net/sqlcipher-api/

如果您在 Linux 上并且不能(或不想)修改系统,则修改 sqlite 下的配置脚本)案例,以便它找到 sqlcipher header 并链接到正确的 libsqlcipher 库。例如,此更改允许我使用 SQLCipher 构建 SQLite 插件,

--- a/configure
+++ b/configure
@@ -4736,12 +4736,12 @@ for _SQLDR in $CFG_SQL_AVAILABLE; do
if [ "$CFG_SQL_sqlite" != "no" ]; then
SQLITE_AUTODETECT_FAILED="no"
if [ "$CFG_SQLITE" = "system" ]; then
- if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists sqlite3 2>/dev/null; then
+ if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists sqlite3override 2>/dev/null; then
QT_CFLAGS_SQLITE=`$PKG_CONFIG --cflags sqlite3 2>/dev/null`
QT_LFLAGS_SQLITE=`$PKG_CONFIG --libs sqlite3 2>/dev/null`
else
- QT_CFLAGS_SQLITE=
- QT_LFLAGS_SQLITE="-lsqlite3 -lz"
+ QT_CFLAGS_SQLITE="-I/usr/include/sqlcipher"
+ QT_LFLAGS_SQLITE="-lsqlcipher -lz"
fi
if compileTest unix/sqlite "SQLite" $QT_LFLAGS_SQLITE $QT_CFLAGS_SQLITE; then
if [ "$CFG_SQL_sqlite" = "auto" ]; then

然后你需要用-system-sqlite配置

关于c++ - 是否可以将 QSqlDatabase 与 SQLCipher 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22423280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com