2012-11-03 41 views
4

我開發了創建多個表的應用程序,但我想檢查這些表。我知道有一種使用adb shell sqlite3命令的方式,但是這對設備不起作用...它可以很好地與模擬器配合使用。我正在使用設備,因爲它比用於測試的模擬器更快。所以我的問題是,有沒有辦法檢查使用任何eclipse插件或任何sqlite數據庫管理器在設備中創建的數據庫表?如何檢查設備上的sqlite數據庫表?

+1

,因爲我知道你必須植根(設備),以檢查它通過'adb' –

+0

可能是這些鏈接可以幫助你在任何way- [如何打開一個SQLite管理工具,SQLite數據庫] [1 ]和 [用於Eclipse的Sqlite插件:在Android設備上調試sqlite數據庫] [2] [1]:http://stackoverflow.com/questions/6584154/how-to-open-a-sqlite- database-in-a-sqlite-management-tool [2]:http:// stackoverflow。com/questions/5907174/sqlite-plugin-for-eclipse-debug-sqlite-database-on-android-device-live –

+1

這個問題爲什麼降級?這是一個合法的問題,所以我是goig +1如果你是根植的 – Bostone

回答

0

在不同的平臺上有sqlite應用程序(Windows,Mac OS X等)。

我認爲這是一個好主意,adb pull數據庫文件到您的計算機,並使用您最喜愛的sqlite應用程序來檢查數據庫文件。

1

如果你紮根了,你可以將數據庫文件從data/data/com中提取出來。 yourapp.title /數據庫,然後在SQLite數據庫管理器查看,如: SQLite Database Browser

,如果你不紮根,無法查看數據庫的內部結構,但也許你可以有一個光標適配器鏈接到將顯示數據庫表內容或類別的內容的列表視圖。

+0

你也可以在設備上安裝根資源管理器,它帶有一個sqlite查看器,所以你可以直接在你的設備上查看你的數據庫,當使用模擬器..我發現使用DDMS中的文件資源管理器更容易將數據庫拉出並查看它們 – Jimmar

+0

我正在測試LG Nexus 4(Android最新版本4.3)上的數據庫應用程序。我無法將數據庫拉到我的主機上,而我可以在模擬器上遵循Android指南:http://developer.android.com/tools/help/sqlite3.html
我可以查看數據庫完全。請遵循以下內容:http://davanum.wordpress.com/2007/12/11/android-how-to-poke-around-the-sqlite3-databases/ – Khushboo

1
  1. 在調試模式下構建您的應用程序。
  2. 在shell中,寫入run-as your.package.name。通過這你切換到您的應用程序的UID(獲得訪問您的應用程序數據文件夾)。
  3. cat /data/data/your.package.name/databases/database_name > /sdcard/database_name。這將您的數據庫文件複製到SD卡。

你現在可以在你的SD卡上自由地瀏覽你的數據庫。

+0

不幸的是,在Nexus 4上,sdcard被模擬並寫入失敗 – Bostone

+0

好吧..我不知道nexus 4.但仍然可以在你的數據庫文件夾中使用sqlite3命令並使用sql命令瀏覽數據。 – kdehairy

+0

你不能 - 它不是隻安裝在設備上的模擬器:(我不想根源於我的手機 – Bostone

0

許多設備沒有外部存儲器支持,而是具有較大的內部存儲器,但不會因使用外部存儲器代碼寫入數據而導致任何問題,因爲這些設備具有與訪問內部數據或移動數據相關的不同隱私策略。您可能必須使用文件資源管理器應用程序來查看此類設備中的文件,而無需外部存儲器支持。藉助文件資源管理器應用程序,您將能夠看到應用程序目錄或文件,無論您爲應用程序創建了哪個文件。

0

我想出了一個簡單的方法來調試我的數據庫而不生根或複製數據庫。我只是在我的設備安裝簡單,並且免費SQlite的經理,我加入到靜態最終字符串到我SQLLiteOpenHelper類:

private static final String DATABASE_NAME = "myDatabaseName.db"; 
private static final String DATABASE_NAME_DEBUG_PATH = "/mnt/sdcard/"; 

然後,我這樣設置私有構造:

//Defaut constructor. 
    private DatabaseHelper(Context context) { 
     //Allow database access without rooting the device. 
     super(context, (BuildConfig.BUILD_TYPE == "debug") ? DATABASE_NAME_DEBUG_PATH + DATABASE_NAME : DATABASE_NAME, null, DB_VERSION); 
    } 

這樣您的SQlite管理器將在您調試時找到您的數據庫,因爲它將位於您的SD中,您將能夠毫無問題地看到它並且不會生根。

相關問題