2014-01-17 29 views
4

我正在使用一個MFC應用程序,我必須使用sqlite數據庫iOS應用程序。如何從另一個平臺(iOS到Windows)打開和讀取SQLite數據庫

iOS數據庫使用SQLite API加密,調用sqlite3_key()

但是,當我試圖在我的MFC應用程序打開的iOS同一個數據庫,它拋出異常說文件被加密數據庫,無法從數據庫中讀取數據。

iOS數據庫將從DropboxMFC應用下載將取代當前的數據庫,並使用它,而不是以前

我使用下面打開使用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

但是,結果是一樣的。所以, 任何人都可以告訴我如何實現這一目標?

先謝謝您。

+0

您確定在打開後設置密鑰正確嗎? – PlasmaHH

+0

是的,因爲'iOS'數據庫是用密鑰加密的並且使用它,所以我必須設置密鑰到數據庫。 –

+0

[CppSQLite3DB](http://www.codeproject.com/script/Articles/ViewDownloads.aspx?aid=6343)類似乎沒有任何方法對應'sqlite3_key()'(這不是部分[標準SQLite API](http://www.sqlite.org/c3ref/funclist.html)。)我認爲你需要支持加密的'sqlite3.lib'的擴展版本。 – nodakai

回答

1

http://sqlcipher.net/

SQLCipher有廣泛的平臺支持[..]C/C++[..]iPhone/iOS[..]

中可能使用SQLCipher您Windows應用程序將解決不兼容問題。

+0

我已經嘗試過,但我得到同樣的結果 –

相關問題