【问题标题】:How to open and read SQLite database from another platform like (iOS to Windows)如何从另一个平台(如(iOS 到 Windows))打开和读取 SQLite 数据库
【发布时间】:2014-02-06 18:37:20
【问题描述】:

我正在开发一个MFC 应用程序,我必须使用iOS 应用程序的sqlite 数据库。

iOS 数据库使用称为sqlite3_key() 的SQLite API 进行加密。

但是当我尝试在我的 MFC 应用程序中打开 iOS 的同一个数据库时,它会抛出异常提示 文件已加密或不是数据库 并且无法从数据库中读取数据。

MFC 应用程序将从Dropbox 下载iOS 数据库,并将替换当前数据库并使用它而不是以前的数据库

我正在使用以下代码打开数据库,使用CppSqlite3 Wrapper 为Sqlite:

    CppSQLite3DB db;
try{
    db.open("mydb.db");
    TRACE(_T("database opened"));
    db.key("1234", strlen("1234"));
}catch(CppSQLite3Exception e){
    return NULL;
}

由于CppSQLite3DB 类没有名为key() 的函数。我已经在类中添加了该功能

   void CppSQLite3DB::key(const char* szKey, int nKey)
{
    if (mpDB)
    {
        sqlite3_key(mpDB, szKey, nKey);
    }
}

并将我的库升级到SQLiteEncrypt。 而iOS 应用程序将SQLCipher 用于Database。

但是,结果是一样的。所以, 谁能告诉我如何做到这一点?

在此先感谢您。

【问题讨论】:

  • 你确定打开后设置密钥正确吗?
  • 是的,因为iOS 数据库是用密钥加密的,要使用它,我必须为数据库设置密钥。
  • CppSQLite3DB 类似乎没有任何与sqlite3_key() 对应的方法(这不是standard SQLite API 的一部分。)我认为您需要@987654349 的扩展版本@支持加密。
  • @nodakai 我已经编辑了我的问题解释。
  • 那最好问问the vendor,因为我在他们的网站上找不到跨操作系统的可移植性保证。

标签: c++ database sqlite ios5 mfc


【解决方案1】:

来自http://sqlcipher.net/:

SQLCipher 对 [..] C/C++ [..] iPhone/iOS [..] 有广泛的平台支持p>

也许在您的 Windows 应用程序中使用 SQLCipher 可以解决不兼容问题。

【讨论】:

    猜你喜欢
    • 2014-01-31
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 2011-04-26
    • 1970-01-01
    相关资源
    最近更新 更多