2012-06-11 231 views
0

數據庫可以使用相同的加密密鑰打開(),並且工作正常。嘗試使用多個加密數據庫 - 全部都可以打開,但不能連接。無法附加加密的SQLite數據庫:「無法打開數據庫文件」

加密,當未加密(字節組爲空)時,此工作:

connection.open(file, "create", false, 1024, bytearray); 

時不加密這僅適用於:

connection.attach("db" + newnum.toString(), file, new Responder(attachEncryptedSuccess, openEncryptedError), bytearray); 

任何幫助表示讚賞。

UPDATE:

剛剛發現一個奇怪的模式在這裏:

看來,如果我創建一個加密的數據庫,然後創建新的數據庫和附加它們,一切工作正常。

創建的文件在卸載後只能使用它們最初創建的命令正確打開。因此,我在使用open()之前創建的加密數據庫只能用open()方法打開。所有最初使用attach()創建的加密數據庫只能使用attach()打開。首先打開哪個數據庫(),哪一個是主數據庫也沒有關係。它甚至可以不加密。

這是非常奇怪的事情。這是一個錯誤?或者我在這裏做錯了什麼?

回答

0

我剛纔碰到一個問題,聽起來好像可能會影響到你。如果你從AIR創建兩個數據庫,那麼這應該可以正常工作,但是如果你使用任何外部工具創建了一個數據庫 - 通常大多數工具將默認爲PRAGMA ENCODING = UTF8。作爲Adobe,AIR做的事情與直接告訴你他們創建他們的UTF16-LE有點不同。

根據sqlite規則,不同的編碼類型不能以一種或另一種方式附加。驗證的一種方法是使用sqliteman或其他一些sqlite編輯器來驗證雜注設置。

對我來說,最後我不得不從一個模板數據庫初始化一個種子數據庫(空數據庫 - 只是頭文件被AIR寫入)。如果我允許AIR創建我的起始數據庫,則它被設置爲UTF16,我無法附加UTF8模板。