android - 如何查看 Android 设备中的数据库?

标签 android sqlite

我需要在我的 android 设备中查看数据库,但由于它是一个未 root 的设备,我无法这样做。我在我的 DBAdapter 类中实现了以下代码,并在另一个 Activity 中调用它。

代码:

void exportDB() {
        try {
            File sd = Environment.getExternalStorageDirectory();
            File data = Environment.getDataDirectory();

            if (sd.canWrite()) {
                String currentDBPath = "//data//" + "com.example.facebook_integration"
                        + "//databases//" + "image_database.db";
                String backupDBPath = "//sdcard//FBDatabase";
                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();

        }
    }

但是上面的代码好像不行。我已经在 Stackoverflow 上很好地浏览了这个问题(有一些安静的问题)并且还尝试了 adb 命令但它们都没有用。你能告诉我上面的代码哪里出了问题或者上面的解决方案的替代方法吗?帮助将不胜感激伙计们。

最佳答案

您可以将数据库转储到 SD 卡中并打开 SQLite 管理器或 SQLite 数据库工具:

    File f=new File("/data/data/yourapppackagename/databases/database");
                    FileInputStream fis=null;
                    FileOutputStream fos=null;

                    try
                    {
                      fis=new FileInputStream(f);
                      fos=new FileOutputStream("/mnt/sdcard/folder/database.db");
                      while(true)
                      {
                        int i=fis.read();
                        if(i!=-1)
                        {fos.write(i);}
                        else
                        {break;}
                      }
                      fos.flush();
                      Toast.makeText(getParent(), "DB dump OK", Toast.LENGTH_LONG).show();
                    }
                    catch(Exception e)
                    {
                      e.printStackTrace();
                      Toast.makeText(getParent(), "DB dump ERROR", Toast.LENGTH_LONG).show();
                    }
                    finally
                    {
                      try
                      {
                        fos.close();
                        fis.close();
                      }
                      catch(Exception ioe)
                      {}
                    }

关于android - 如何查看 Android 设备中的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20737774/

相关文章:

android - 如何在 Android 上的 Chrome 中摆脱 fancybox iframe 边框(或滚动条?)

未创建 Android SQLite 表

sql - 如何在 SQLite 数据库中重新播种自动增量列?

android - listview onClick 返回错误结果

java - requestWindowFeature(Window.FEATURE_NO_TITLE);不工作

android - 如何阻止我的 Android 应用程序在模拟器中崩溃?

android - 未处理的异常 : PlatformException(Failed to run model, 解释器忙,java.lang.RuntimeException:解释器忙于 flutter

android - 如何为 Android 平板电脑创建应用程序设置按钮?

c++ - QTableView View 什么都不显示

c++ - C++ 的 SQLite 替代方案