android平板电脑中的sqlite数据库在哪里?

时间:2012-12-27 10:06:05

标签: android database android-sqlite

我正在开发一个应用程序,在其中,在本地sqlite数据库中插入一些值。 它在本地模拟器和平板电脑上工作正常。插入值后,我想获得sqlite数据库。我能够从模拟器获取数据库,但不幸的是无法从Android平板电脑获取sqlite数据库。 请建议从真实设备(平板电脑)获取数据库的过程是什么。

感谢。

5 个答案:

答案 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();
    }
}