2012-01-16 151 views
1

我爲我的應用程序創建了一個數據庫。現在我想確保所有的屬性都是正確的,並且行正在被正確填充。數據庫似乎在/data文件夾中,但此文件夾似乎爲空。當我嘗試使用sqlite3來訪問它(從命令行使用adb shell)時,我得到一個未找到的錯誤。我正在玩的Android手機是Google Nexus S.有關如何導出或測試數據庫是否正確構建並按預期使用的想法?導出Android SQLite數據庫

回答

5

在DDMS透視圖中,在模擬器運行時使用文件資源管理器。您可以在那裏瀏覽文件夾。你會發現你的數據庫/數據/數據/你的包名/數據庫 您可以找到有關DD​​MS細節here

+0

請看下面的鏈接,一步一步地使用圖片,和@ C.d寫的一樣。 http://www.weston-fl.com/blog/?p=2812 – J4cK 2013-06-02 14:04:10

+0

這隻有在您的設備已生根時纔有效 - 默認情況下,模擬器已根植。在許多設備中,您無法訪問/數據/數據來執行您的建議。 – George 2013-07-22 13:52:25

1

您需要根手機,或者使用模擬器。在普通的非固定電話上,您沒有像這樣訪問私人應用數據的權限。

Read this to see how to export your file for analysis

+0

在某種程度上,我將不得不獲取數據庫的表格,因爲我將不得不對他們執行數據分析。應該有一種獲取這些數據的方法。至於現在,我怎樣才能從模擬器訪問這些數據? – JustCurious 2012-01-16 22:32:17

+0

有關如何從Eclipse/DDMS瀏覽模擬器文件系統的詳細信息,請參閱C.d.的答案。 – 2012-01-16 22:39:05

+0

謝謝!當我不得不將它導出用於數據分析時如何?那麼我將需要導出許多數據庫。 – JustCurious 2012-01-16 23:00:43

3

您可能會發現這個問題有所幫助:

How do I backup a database file to the SD card on Android?

@skeniver說:

try { 
    File sd = Environment.getExternalStorageDirectory(); 
    File data = Environment.getDataDirectory(); 

    if (sd.canWrite()) { 
     String currentDBPath = "//data//{package name}//databases//{database name}"; 
     String backupDBPath = "{database name}"; 
     File currentDB = new File(data, currentDBPath); 
     File backupDB = new File(sd, backupDBPath); 

     if (currentDB.exists()) { 
      FileChannel src = new FileInputStream(currentDB).getChannel(); 
      FileChannel dst = new FileOutputStream(backupDB).getChannel(); 
      dst.transferFrom(src, 0, src.size()); 
      src.close(); 
      dst.close(); 
     } 
    } 
} catch (Exception e) { 
} 

與@Jakobud增加,你需要有

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

在清單中。

+0

謝謝你,對我完美的作品 – Nicola 2014-01-14 14:48:57