2009-12-26 35 views
10

我已經閱讀了關於如何訪問數據庫內容的問題的答案,但我似乎無法讓它在我的機器上工作。這裏是殼日誌:如何訪問Android Emulator數據庫的內容?

C:\android-sdk-windows\tools>adb -s emulator-5554 shell 
# sqlite3 /data/data/com.android.demo.notepad2/databases/notes 
sqlite3 /data/data/com.android.demo.notepad2/databases/notes 
SQLite version 3.5.9 
Enter ".help" for instructions 
sqlite> .tables 
.tables 
sqlite> ^C 
C:\android-sdk-windows\tools> 

SQLite的只是回聲我的命令回到我的身邊,甚至儘管Eclipse的文件瀏覽器告訴我它的存在。如果我使用sqlite3工具並使用「.tables」命令被接受。

通過模擬器的SQLite語法是不同的是我錯過了什麼嗎?

(對不起,這麼多的問題,似乎沒有要在Android上很多連貫的文檔!)

謝謝!

+0

「SQLite的只是回聲我的命令回到我的身邊,甚至儘管Eclipse的文件瀏覽器告訴我它的存在。如果我使用sqlite3的工具,並使用」 .tables」的命令是ACC epted「。這兩句話似乎表達了完全相反的事情:它同時起作用並且不起作用。你能否澄清你的意思?另外,如果您使用工具欄中的「代碼示例」圖標(101 010)對源代碼和輸出列表進行格式化,它們對我們而言會更容易閱讀。 – CommonsWare 2009-12-26 19:44:21

+0

我的意思是說,如果我運行上面的代碼(在Android外殼)它回顯在,但是,如果我從Windows命令行工具sqlite3的,並創建一個數據庫,所有命令都按預期工作。 非常感謝:) – Jumbo 2009-12-26 20:00:56

回答

13

我可以告訴你,它工作正常,我在Android 2.0.1:

$ adb shell 
# cd /data/data/apt.tutorial 
# ls 
lib 
databases 
shared_prefs 
# cd databases 
# ls 
lunchlist.db 
# sqlite3 lunchlist.db 
SQLite version 3.5.9 
Enter ".help" for instructions 
sqlite> .tables 
android_metadata restaurants  
sqlite> .exit 
# exit 

可以使用DDMS隨時下載數據庫文件或adb pull和使用桌面客戶​​端的SQLite研究它。例如,我使用Firefox的SQLite Manager插件。另外,請記住,SQLite沒有默認的文件擴展名,所以如果你的數據庫不是notes,但notes.dbnotes.sqlite什麼的,你需要指定擴展名。此外,我還沒有在Windows上嘗試過這種方式,並且可能存在Windows命令提示符以及Android設備上可用的有限shell導致難度的問題。

3

如果你想發出命令行使用sqlite3的東西像語句

$ adb -e shell sqlite3 -batch /data/data/com.example.dbsample/databases/db '.tables' 
android_metadata 

$ adb -e shell sqlite3 -batch /data/data/com.example.dbsample/databases/db 'select * from android_metadata;' 
en_US 

的明顯好處是,你可以依靠你的shell歷史,你可以在腳本中使用此。

1

我有同樣的問題,發現與文檔相反,你不應該把「.db」擴展名放在數據庫文件名上。

注意:我使用win7和2.1模擬器。

0

我有同樣的問題,花了將近一個小時,在這裏張貼,這樣可以節省別人的時間,請檢查您是否具有擴展名一起被給予的正確的文件名,有數據庫文件夾下myDB.db兩個文件和myDB.db期刊,當我跑
「sqlite3的/data/data/com.my.package/databases/myDB」

.tables
上市沒什麼,sqlite3的創造了一個新的數據庫名爲MYDB,它沒有打開myDB.db