2012-04-18 54 views
2

我需要將電話中沒有「Root」的數據庫複製到打印機中,因此我也採用其他方法:copy/data/data /。 ./databases/test.db首先到/ sdcard然後我在我的PC或朋友的個人電腦上使用adb shell sqlite3命令,有一些問題:1)有時它可以成功打開2)有時它顯示「文件被加密或不是一個數據庫」 3)有時,它顯示「數據庫磁盤映像格式錯誤」數據庫磁盤映像格式不正確或文件已加密或不是數據庫

。注意:sqlite3的版本不同

文件的」根本原因是加密的或不一個數據庫「是版本問題,是不是?

根本原因是什麼「數據庫磁盤映像格式不正確」?我在網上搜索了一些關於它的信息,但我仍然無法修復它。

謝謝!

編輯1:測試手機是HTC HD 編輯2:我這個線程:http://groups.google.com/group/android-developers/browse_thread/thread/2b8a8fa9b955eecd/0615c6111d93ea02?lnk=raot有消息:我會強烈建議你不要這樣做。 不能保證二進制數據庫文件將在Android版本中兼容,並且在所有定製ROM中都少得多。

看來「數據庫磁盤映像格式不正確」的根本原因是Sqlite3版本。但如何備份數據庫到SD卡是最好的辦法?還有其他方法嗎?

編輯3:link 1 link 2 link 3

+0

在你鏈接的線程中,有很多關於數據庫文件沒有被正確複製的文章 – 2012-04-19 09:32:21

回答

0

我的直覺是,認爲該數據庫文件將成爲傳輸過程中莫名其妙地損壞。根據我的經驗,如果數據庫文件已損壞,則完成此操作。

您應該驗證數據庫文件沒有損壞源,並與following pragma目標上都:

PRAGMA integrity_check; 

如果一切都很好,結果集爲單列紀錄值ok

只要是明確的,對任何出現以下三種情形的,你的數據庫是非常損壞,無法使用:

  • sqlite3的甚至不會打開數據庫文件,並返回一些錯誤
  • sqlite3的意志打開數據庫文件,但是當你運行一些語句返回一些錯誤
  • sqlite3的將打開數據庫文件,但不返回ok

由於您的源代碼和目標似乎都使用了sqlite 3.x.y.z,所以文件格式不應該是是一個問題(有一些例外,但我懷疑它們中的任何一個都是您的痛苦來源)。

您可能想要做的另一件事是驗證源文件和目標文件是否相同。你可以比較它們的散列(md5,sha1或其他)。

+0

謝謝你的回覆。 – Judy 2012-04-18 14:29:59

相關問題