数据库是为模拟器创建的,而不是为 android 设备创建的
Database is created for emulator but not for android device
我正在制作一个 android 应用程序,其中的数据库是使用 sqlite open helper 创建的。当我在模拟器中安装我的应用程序时它工作正常但是当我在我的 phone 中做同样的事情进行测试时,我没有看到在 DDMS 文件资源管理器视图 data/data 中创建任何数据库。它出来是空的。这个你能帮我吗。
谢谢。
您可以在模拟器上看到 DDMS 应用程序的私有文件(来自 data/data 目录) 但在没有 root 的 设备中是看不到的。但这并不意味着数据库不存在。如果你想从真实设备上获取数据库,你必须root它或者在你的应用程序中编写一些代码来复制SD卡上的数据库文件。
root android 设备
或
写一个复制db文件到sdcard的代码
从/data/data目录复制数据库到sdcard
的代码
public void copyDBToSDCard() {
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String currentDBPath = "//data//"+getPackageName()+"//databases//"+DB_NAME+"";
String backupDBPath = "backupname.db";
File currentDB = new File(data, currentDBPath);
File backupDB = new File(sd, backupDBPath);
if (currentDB.exists()) {
FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(backupDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
}
}
Toast.makeText(print.this,
"Database Saved", Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(print.this,
"Error="+e, Toast.LENGTH_LONG).show();
Log.i("FO","exception="+e);
}
}
我正在制作一个 android 应用程序,其中的数据库是使用 sqlite open helper 创建的。当我在模拟器中安装我的应用程序时它工作正常但是当我在我的 phone 中做同样的事情进行测试时,我没有看到在 DDMS 文件资源管理器视图 data/data 中创建任何数据库。它出来是空的。这个你能帮我吗。
谢谢。
您可以在模拟器上看到 DDMS 应用程序的私有文件(来自 data/data 目录) 但在没有 root 的 设备中是看不到的。但这并不意味着数据库不存在。如果你想从真实设备上获取数据库,你必须root它或者在你的应用程序中编写一些代码来复制SD卡上的数据库文件。
root android 设备
或
写一个复制db文件到sdcard的代码
从/data/data目录复制数据库到sdcard
的代码public void copyDBToSDCard() {
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String currentDBPath = "//data//"+getPackageName()+"//databases//"+DB_NAME+"";
String backupDBPath = "backupname.db";
File currentDB = new File(data, currentDBPath);
File backupDB = new File(sd, backupDBPath);
if (currentDB.exists()) {
FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(backupDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
}
}
Toast.makeText(print.this,
"Database Saved", Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(print.this,
"Error="+e, Toast.LENGTH_LONG).show();
Log.i("FO","exception="+e);
}
}