【发布时间】:2018-09-13 19:47:14
【问题描述】:
我已将我的设备连接到系统。但我无法在 DDMS 的文件探索中查看我的数据库。有什么简单的方法可以让我从 android-device 获取数据库文件吗?
【问题讨论】:
-
在真实设备中无法看到您的数据库。但您可以在 SDCard 中导出数据库,然后在 SQLite 浏览器中打开。
我已将我的设备连接到系统。但我无法在 DDMS 的文件探索中查看我的数据库。有什么简单的方法可以让我从 android-device 获取数据库文件吗?
【问题讨论】:
您必须按照以下步骤来完成您的任务:-
连接您的设备并在调试模式下启动应用程序。
将数据库文件从您的应用程序文件夹复制到您的 SD 卡: 执行:
./adb -d shell "run-as com.yourpackge.name cat /data/data/com.yourpackge.name/databases/filename.sqlite > /sdcard/filename.sqlite"
将数据库文件拉到你的机器上:执行:
./adb pull /sdcard/ 执行:./adb
安装 Firefox SQLLite 管理器:https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/
打开 Firefox SQLLite 管理器并打开上面第 3 步中的数据库文件。
【讨论】:
private void importDB() {
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String currentDBPath = "//data//" + "<package name>"
+ "//databases//" + "<database name>";
String backupDBPath = "<backup db filename>"; // From SD directory.
File backupDB = new File(data, currentDBPath);
File currentDB = new File(sd, backupDBPath);
FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(backupDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
Toast.makeText(getApplicationContext(), "Import Successful!",
Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "Import Failed!", Toast.LENGTH_SHORT)
.show();
}
}
private void exportDB() {
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String currentDBPath = "//data//" + "<package name>"
+ "//databases//" + "<db name>";
String backupDBPath = "<destination>";
File currentDB = new File(data, currentDBPath);
File backupDB = new File(sd, backupDBPath);
FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(backupDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
Toast.makeText(getApplicationContext(), "Backup Successful!",
Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "Backup Failed!", Toast.LENGTH_SHORT)
.show();
}
}
这里是reference
【讨论】:
转到Android Studio->查看->工具窗口->设备文件资源管理器->数据->数据->选择你的包->数据库->你可以查看你的数据库
【讨论】:
您可以使用 facebook 的 stetho 来调试任何 android 本机应用程序。您可以通过在依赖项中包含 stetho 来实现这一点。然后在完成后在覆盖的 oncreate 方法中的主应用程序类中初始化 stetho,确保清单配置为您的应用类。可以查看https://code.tutsplus.com/tutorials/debugging-android-apps-with-facebooks-stetho--cms-24205
dependencies {
compile 'com.facebook.stetho:stetho:1.5.0'
compile 'com.facebook.stetho:stetho-okhttp:1.5.0'
}
那么你可以使用
Stetho.initializeWithDefaults(this);
初始化 stetho
在应用程序运行时转到 chrome://inspect 然后在 websql 下您将能够查看数据库中的所有表并编写查询来操作数据库
【讨论】: