我正在开发一个应用程序,在其中插入一些值到本地 sqlite 数据库中。它在本地模拟器和平板电脑上运行良好。插入值后,我想获取 sqlite 数据库。我能够从 Emulator 获取数据库,但不幸的是无法从 Android Tablet 获取 sqlite 数据库。请建议从真实设备(平板电脑)获取数据库的程序是什么。
谢谢。
我正在开发一个应用程序,在其中插入一些值到本地 sqlite 数据库中。它在本地模拟器和平板电脑上运行良好。插入值后,我想获取 sqlite 数据库。我能够从 Emulator 获取数据库,但不幸的是无法从 Android Tablet 获取 sqlite 数据库。请建议从真实设备(平板电脑)获取数据库的程序是什么。
谢谢。
谢谢大家
最后我得到了一个合适的解决方案。我们无法从任何(三星)平板电脑获取 db,但我们可以复制其数据并拉取到我们的 PC。
public void copyDataBase() {
Log.i("info", "in copy data base at finally");
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String currentDBPath = "/data/" + context.getPackageName()
+ "/databases/DB_29Apr.sqlite";
String backupDBPath = "DB_29Apr.sqlite";
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();
}
}
} catch (Exception e) {
Log.i("info", "in copy of bata base 10 ");
}
}
通过上述功能,您可以将数据库复制到平板电脑的外部空间。
转到 DDMS 并在平板电脑的存储位置的 db 中找到具有给定名称的已定义数据库。
在您的平板电脑 SD 卡中手动创建一个名为 database 的文件夹。然后运行您的应用程序,然后打开数据库文件夹以获取 .db 文件。
您必须从FileExplorer中选择它 mnt---> sdcard---> your DB_NAME
仅供参考,出于安全目的,在平板电脑设备中,它不允许找到您的 .db 文件。如果您使用的是模拟器,那么您有权访问数据库的位置[目录]。
这是最终答案。
谢谢
原因你不能,因为它会在以下位置创建,比如
/data/data/<your root package name in android manifest file>/databases/< you database name>
只能由您的应用程序访问,因此只需将您的文件从上述位置复制到 sd 卡位置以编程方式使用以下功能可能有助于复制流
public static void CopyStream(InputStream is, OutputStream os) {
final int buffer_size = 1024;
try {
byte[] bytes = new byte[buffer_size];
for (;;) {
int count = is.read(bytes, 0, buffer_size);
if (count == -1)
break;
os.write(bytes, 0, count);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}