【问题标题】:Android How can I see my SQLite?Android 如何查看我的 SQLite?
【发布时间】:2014-10-16 12:42:27
【问题描述】:

我用Eclipse打开了data/data/your.package.name/databases,但是data里面什么都没有。

有人说我没有“root权限”。

如何查看我的 SQLite?

【问题讨论】:

  • 您可以使用 sqlite 浏览器查看您的应用程序的数据库 ....
  • 数据库浏览器不知道在哪里?我必须告诉他路径。
  • 你需要让你的 android 设备 root。在 google 上查看有很多关于相同的链接,但是暂时为什么不尝试已经拥有所有 root previliges 的模拟器和你可以从 DDMS 访问 db 文件,然后文件资源管理器。从设备中提取它,保存在硬盘上并使用 Sqlite query browser 来查看 db 文件
  • 是的,您应该提取文件并按照@nobalG 告诉您的程序进行操作...

标签: java android


【解决方案1】:

我认为,最简单的方法是在您的应用中编写一个小函数,将/data/.../etc 复制到/sdcard/ 或其他位置。

之后,您就可以从您的计算机上打开该数据库了。

这是一个完整的答案,如何将文件复制到 SDCard:https://stackoverflow.com/a/19093736/2891426

我会在一个全新的类中实现这个函数,并创建一个按钮来调用它。或者类似的东西。

您可以从这里下载一个小型 Windows 应用程序,以浏览 DB 文件:http://sqlitebrowser.org/

【讨论】:

  • 我知道数据库路径,但是打不开,甚至找不到。
  • 你确定有数据库吗?您想从您的应用程序中访问它吗?你不能从其他任何地方读取该存储空间(android 不允许在任何其他应用程序中读取这些文件!),如果你没有 root 手机,只能从你的应用程序中读取!
【解决方案2】:

您确实需要 root 访问权限才能查看设备上的数据库。不过,您可以使用模拟器代替物理设备,这样您就可以在 Eclipse 中探索数据库。

【讨论】:

  • 我怎样才能获得'root权限'?
  • @chunhao2107:这取决于你的手机、版本等。我建议你去xda-dev的论坛,这是一个很好的手机资源。但是,如果你对你的手机进行root,你可能会失去你的保证,你将能够做一些非常不酷的事情。所以,如果你知道你在做什么,那就只扎根你的手机!
【解决方案3】:

您应该使用 SQLiteBrowser 来轻松访问您的数据库。 你可以从这里下载http://sqlitebrowser.org/

【讨论】:

    【解决方案4】:

    您无需拥有 root 权限即可访问外部存储。不过,您需要内部存储。在 ddms 中的 eclipse 中转到 android/data/yourpackage ,您应该在那里找到您的应用程序创建的所有文件。如果没有文件,则没有数据库。 找到数据库后,您可以使用 sqliteman 查看其内容 http://sourceforge.net/projects/sqliteman/files

    最好的解决方案是使用内部存储,然后在您想要访问它时将其导出到外部。看这里:https://stackoverflow.com/a/19093736/2026478

    public void exportDatabse(String databaseName) {
        try {
            File sd = Environment.getExternalStorageDirectory();
            File data = Environment.getDataDirectory();
    
            if (sd.canWrite()) {
                String currentDBPath = "//data//"+getPackageName()+"//databases//"+databaseName+"";
                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();
                }
            }
        } catch (Exception e) {
    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-01-14
      • 1970-01-01
      • 2019-07-02
      • 2016-11-27
      • 1970-01-01
      • 2021-08-16
      • 2022-01-04
      • 1970-01-01
      相关资源
      最近更新 更多