2012-03-22 130 views
4

我成功地將一些數據插入到我的sqlite數據庫中(我通過打印出從插入返回的長ID並且它不是-1的東西來確認這一點),所以我知道它在那裏。問題在於我使用SQLite數據庫瀏覽器查看的sqlite數據庫位於資產文件夾中(我用它將已經爲其他表的數據複製到平板電腦目錄中) - 在這種情況下,它是/ data/data /包名/文件/在Android平板電腦上查看SQLite數據 - SQLite數據庫瀏覽器

平板電腦是摩托羅拉xoom ICS(4.0.3)和開發的MacBook Pro。關於我能用來查看數據的任何建議?

亞行計劃在Android的SDK-mac_x86 /平臺的工具,我執行以下命令:

./adb殼

  • ,但我沒有得到任何地方 - 只是權限問題。我看到有人建議使用Firefox附加組件,但是......真的嗎?那裏最好的是?似乎對我來說,開發人員在數據庫中查看其數據會有更好的途徑。如果你打算在數據庫中插入東西,你希望能夠查看內容,以防你需要稍後調試你的選擇(作爲一個很好的例子)。

編輯:我無法讓firefox插件工作。似乎無法識別任何外部設備。

有什麼想法?謝謝。

回答

1

我也有類似的問題 - 決定把一個按鈕,在我的應用程序,單擊時,將數據庫複製到SD卡。然後,您可以使用DDMS將數據庫從SD卡複製到連接的機器和火起來不管你想要檢查分貝,驗證值等

package com.me.myPackage; 

import java.io.File; 

import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.OutputStream; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

import android.content.Context; 
import android.os.Environment; 
import android.widget.Toast; 

public class Utility { 

public static void backupDatabase(Context context) throws IOException { 

    // Open your local db as the input stream 
    String inFileName = PATH_TO_YOUR_DB; 
    File dbFile = new File(inFileName); 
    FileInputStream fis = new FileInputStream(dbFile); 

    File outputDirectory = new File(
      Environment.getExternalStorageDirectory() + "/PATH_FOR_BACKUP"); 
    outputDirectory.mkdirs(); 
    SimpleDateFormat sdf = new SimpleDateFormat(Constants.DATE_TIME_FORMAT_FOR_DATABASE_NAME); // append date time to db name 

    String backupFileName = "/MyApp_" + sdf.format(new Date()) + ".db3"; 
    String outFileName = outputDirectory + backupFileName; 

    // Open the empty db as the output stream 
    OutputStream output = new FileOutputStream(outFileName); 

    // transfer bytes from the inputfile to the outputfile 
    byte[] buffer = new byte[1024]; 
    int length; 
    while ((length = fis.read(buffer)) > 0) { 
     output.write(buffer, 0, length); 
    } 
    // Close the streams 
    output.flush(); 
    output.close(); 
    fis.close(); 

    Toast.makeText(context, "Database backup complete", Toast.LENGTH_LONG) 
      .show(); 
} 

}

1

我不確定這是不是你正在做什麼,但你可以安裝paw,一個android web服務器..然後安裝爪子的php插件,然後用pdo查看數據(以及創建和修改數據)。 如果您需要編程(cli-like)接口以外的其他東西,可以嘗試如this之類的東西。

+0

是啊,這是矯枉過正的方式爲我想要做什麼。我正在做一個關於管理平板電腦上的sqlite數據庫的演示文稿,但如果你甚至不能向他們展示數據庫插入的結果,那麼這意味着你必須相信你插入的內容是正確的,而不能用SQLite數據瀏覽器。正如我剛纔提到的,作爲一名開發人員,您應該如何調試代碼以確保您插入正確的信息?唯一的其他選擇是編寫一個循環來打印結果。 – cspam 2012-03-22 05:49:35

0

一個完全不同的途徑可能是看看使用android sdk's sqlite library,也許你可以通過cli使用它。

0

這裏有一個答案使用亞行:Examining sqlite3 Databases from a Remote Shell

$ adb -s emulator-5554 shell 
# sqlite3 /data/data/com.example.google.rss.rssexample/databases/rssitems.db 
SQLite version 3.3.12 
Enter ".help" for instructions 
.... enter commands, then quit... 
sqlite> .exit 
+0

是的,但我不使用模擬器....這應該如何工作?不是說它不會但我不會「看到」它。 – cspam 2012-03-23 14:44:03