我試着用我的Nexus One。 我有Android SDK和已經使用的命令 ADB拉/data/data/com.myapp.android/databases C:\拉 但我得到的是 拉:建築文件列表... 0文件提取。跳過了0個文件。 此外,似乎無論添加到我安裝的教程NotePad應用程序的數據量如何,應用程序的數據大小(如設置中所示)都不會超過8KB。這怎麼可能?數據庫存儲有其他地方嗎?當我在Eclipse中使用文件資源管理器視圖(這是ADT的一部分)時,我看到/ data中沒有任何內容。 要添加一個扭曲,我沒有任何困難從設備拉任何其他文件。這只是我遇到麻煩的數據庫。 我錯過了什麼嗎?非常感謝。如何將我的android數據庫關閉到我的桌面上?
6
A
回答
10
除非您的手機是固定的,否則無法訪問內部存儲。一種簡單的方法是使用模擬器,然後您可以獲取文件。爲了得到一個數據庫關閉設備我寫了一個小工具,把一些調試UI吧:
private void backupDb() throws IOException {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String currentDBPath = "/data/com.yourcompany.yourapp/databases/yourapp.db";
String backupDBPath = "/yourapp_logs/yourapp.db";
File currentDB = new File(data, currentDBPath);
File backupDB = new File(sd, backupDBPath);
if (backupDB.exists())
backupDB.delete();
if (currentDB.exists()) {
makeLogsFolder();
copy(currentDB, backupDB);
}
dbFilePath = backupDB.getAbsolutePath();
}
}
private void makeLogsFolder() {
try {
File sdFolder = new File(Environment.getExternalStorageDirectory(), "/yourapp_logs/");
sdFolder.mkdirs();
}
catch (Exception e) {}
}
private void copy(File from, File to) throws FileNotFoundException, IOException {
FileChannel src = null;
FileChannel dst = null;
try {
src = new FileInputStream(from).getChannel();
dst = new FileOutputStream(to).getChannel();
dst.transferFrom(src, 0, src.size());
}
finally {
if (src != null)
src.close();
if (dst != null)
dst.close();
}
}
0
創建您的Windows桌面「pull.bat」文件。
在文件的說:
db pull /data/com.APPNAME/databases/DBNAME.sqlite
pause
0
如果您使用的MAC或Linux試試這個腳本。這不需要root權限
#!/bin/bash
REQUIRED_ARGS=2
ADB_PATH=/Users/Tadas/Library/sdk/platform-tools/adb
PULL_DIR="~/"
if [ $# -ne $REQUIRED_ARGS ]
then
echo ""
echo "Usage:"
echo "android_db_move.sh [package_name] [db_name]"
echo "eg. android_db_move.sh lt.appcamp.impuls impuls.db"
echo ""
exit 1
fi;
echo""
cmd1="$ADB_PATH -d shell 'run-as $1 cat /data/data/$1/databases/$2 > /sdcard/$2' "
cmd2="$ADB_PATH pull /sdcard/$2 $PULL_DIR"
echo $cmd1
eval $cmd1
if [ $? -eq 0 ]
then
echo ".........OK"
fi;
echo $cmd2
eval $cmd2
if [ $? -eq 0 ]
then
echo ".........OK"
fi;
exit 0
相關問題
- 1. Android認爲我沒有關閉我的數據庫!爲什麼?
- 2. 正確關閉我的數據庫
- 3. 如何將數據庫從cPanel連接到python的桌面
- 4. 如何將mysql數據庫與我的桌面應用程序集成
- 5. 我們如何關閉java中的hsqldb數據庫
- 6. .Net數據庫如何正確關閉我的數據庫連接?
- 7. Android:關閉SQLite數據庫
- 8. 如何關閉數據庫
- 9. 如何將數據庫連接到我的搜索按鈕android
- 10. 我如何在Android上升級我的數據庫
- 11. 將數據庫中的數據關聯到我的對象
- 12. 我在SQLite(Android)中收到數據庫對象未關閉異常,但我明確地關閉了我的數據庫...幫助?
- 13. 如何將我的數據庫映射到我的模型?
- 14. 如何將我的數據庫插入到我的QTableWidget表中?
- 15. sqlite的文件沒有出現,直到我關閉數據庫
- 16. 我應該關閉我的數據庫連接嗎?
- 17. 我嘗試連接數據庫時關閉了我的Android應用程序
- 18. 如果我使用phpmyadmin導出數據庫,它會鎖定我的表還是將數據庫關閉?
- 19. 服務將關閉,如果我關閉我的應用程序
- 20. Android何時關閉數據庫困境
- 21. 我如何推動新的數據到Android SQLite數據庫
- 22. 我如何把靜態數據到Android的SQLite數據庫?
- 23. 當我關閉模式時,我將如何刷新頁面?
- 24. 如何將我的Android數據庫放到某個「中央服務器」上?
- 25. 面向文檔的數據庫或關係數據庫,我該如何選擇?
- 26. 關閉在桌面上敲擊鍵盤
- 27. 如何將我的Java桌面和mysql數據庫應用程序放入我的網站
- 28. 我如何找到D FA的關閉
- 29. 如何將我上傳到PHP的數據庫中的數據傳遞給JavaScript?
- 30. 將Firebase數據庫的一部分中的所有子鍵都關閉,並在桌面視圖上顯示
感謝您分享您的代碼。最初我使用了仿真器,但轉而使用我的Nexus One Dev手機進行開發,因爲它的速度更快。奇怪的是我的Nexus One已經紮根。當我啓動時,我會在Android加載時看到屏幕底部的解鎖掛鎖。這不意味着我應該能夠執行root命令嗎? – 2010-11-22 17:50:40
你的代碼看起來很好,但我的Eclipse不能識別副本(currentDB,backupDB);指令。 您是否安裝了一些額外的庫(.jar)以使用複製方法? – Rutger 2011-06-09 18:04:17
嘿dagag23,你能否提供複製方法的實現? – 2011-09-01 20:53:48