我正在开发一个应用程序,在其中,在本地sqlite数据库中插入一些值。 它在本地模拟器和平板电脑上工作正常。插入值后,我想获得sqlite数据库。我能够从模拟器获取数据库,但不幸的是无法从Android平板电脑获取sqlite数据库。 请建议从真实设备(平板电脑)获取数据库的过程是什么。
感谢。
答案 0 :(得分:2)
感谢大家
最后我得到了一个合适的解决方案。我们无法从任何(三星)平板电脑获取数据库,但我们可以复制其数据并可以拉到我们的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中具有给定名称的已定义数据库。
答案 1 :(得分:1)
在平板电脑SD卡中手动创建一个名为database的文件夹。 然后运行您的应用程序,然后打开数据库文件夹以获取.db文件。
答案 2 :(得分:1)
您必须从 FileExplorer mnt---> sdcard---> your DB_NAME
答案 3 :(得分:1)
仅供参考平板电脑设备出于安全考虑,它不允许您找到.db文件。 如果您使用的是模拟器,则您有权访问数据库的位置[目录]。
这是最终答案。
谢谢
答案 4 :(得分:1)
因为它会在以下位置创建,例如
,因此无法使用/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();
}
}