2011-10-03 125 views
1

對於開發,有時我們需要更快的編程,即我們程序的SQLite數據庫狀態。但是我只能提取數據庫,如果它在模擬器上,而不是移動的。我怎樣才能看到SQLite數據庫(無模擬器)?

那麼我確切的問題是有沒有辦法看到android的sqlite數據庫或一種方式來提取它?

如果對這個問題沒有很好的答案。當你需要知道表的數據庫狀態時,如何處理這些編程問題?

+0

根您的設備....或管理nexsus 1或爲此總是更好地嘗試在em首先檢查數據庫是否正確,然後在設備上測試 – ingsaurabh

+0

對不起,但使用em不是我想做的事它更快 –

+0

你只需要探索創建的數據庫? – Basil

回答

4

您可以使用

adb shell 

來獲得設備的一個root shell,然後使用任何你喜歡直接在數據庫中。導出,運行腳本等等等等

你可以看看這個鏈接的詳細信息:

developer.android.com/studio/command-line/sqlite3.html

Abount SQLite的命令: http://www.sqlite.org/sqlite.html

+0

Thx爲你的答案,你能給我的方式來提取或管理sqlite數據庫爲了打勾你? –

+0

@ A.Quiroga不客氣。我添加了必要的鏈接到我的答案。 – vbence

+0

+1和一個易用性友好的解決方案 –

3

您可以從外殼提到vbence做到這一點。另一種方法是以編程方式將數據庫文件複製到SD卡。稱這種現象onStop()

File source = new File("data/data/com.ACME/databases/" + DATABASE_NAME); 
File dest = new File(Environment.getExternalStorageDirectory() + "/" + DATABASE_NAME + ".db"); 

public static void copyFile(File sourceFile, File destFile) { 

FileChannel source = null; 
FileChannel destination = null; 

    try { 
     if (!destFile.exists()) { 
      destFile.createNewFile(); 
     } 

    source = new FileInputStream(sourceFile).getChannel(); 
    destination = new FileOutputStream(destFile).getChannel(); 
    destination.transferFrom(source, 0, source.size()); 

    } catch (Exception e) { 
     /* handle exception... */ 
    } finally { 
    try { 
      if (source != null) { 
       source.close(); 
      } 
      if (destination != null) { 
       destination.close(); 
      } 
     } catch (Exception e) { 
      /* handle exception... */ 
     } 
    } 
} 
+0

+1爲有用的答案。 –

-1

對於探索,你可以使用Mozilla Firefox的插件SQLite數據庫命名SQLite Manager。運行應用程序後,使用文件瀏覽器將數據庫拖到您的系統,然後打開firefox - > Tools - > SQLite Manager。一個窗口將會出現,並且有一個選項可以打開數據庫,點擊它並指向你已經拉出數據庫的路徑。打開該數據庫,您可以看到創建的表格和您輸入的值。您也可以選擇添加,編輯,刪除和更新值。

+0

Android上的SQLite –