【问题标题】:Is it possible to use QSqlDatabase along SQLCipher?是否可以沿 SQLCipher 使用 QSqlDatabase?
【发布时间】:2014-04-20 19:45:36
【问题描述】:

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

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

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

【问题讨论】:

    标签: c++ database qt sqlite sqlcipher


    【解决方案1】:

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

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

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

    如果您在 Linux 上并且不能(或不想)修改系统,则修改 sqlite 下的配置脚本)案例,以便它找到 sqlcipher 标头并链接到正确的 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配置

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-30
      • 1970-01-01
      • 2012-07-31
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      相关资源
      最近更新 更多