如何检查设备上的sqlite数据库表?

时间:2012-11-03 19:38:17

标签: android android-sqlite

我开发了创建多个表的App,但我想查看这些表。我知道有一种方法可以使用adb shell sqlite3命令,但这对设备不起作用......它适用于模拟器。我正在使用设备,因为它比测试模拟器更快。所以我的问题是,有没有办法检查使用任何eclipse插件或任何sqlite数据库管理器在设备中创建的数据库表?

5 个答案:

答案 0 :(得分:1)

如果你是root用户,你可以从data / data / com。 yourapp.title / databases中提取数据库文件,然后在sqlite数据库管理器中查看它,例如: SQLite Database Browser

如果你没有root,你就无法查看数据库的内部,但也许你可以将一个游标适配器链接到listview,它将显示数据库表的内容或类似的内容。

答案 1 :(得分:1)

  1. 以调试模式构建应用程序。
  2. 在shell中
  3. ,写下run-as your.package.name。通过此操作,您可以切换到应用程序的UID(获取对应用程序数据文件夹的访问权限)。
  4. cat /data/data/your.package.name/databases/database_name > /sdcard/database_name。这会将您的数据库文件复制到SD卡。
  5. 您现在可以在SD卡上自由浏览数据库。

答案 2 :(得分:0)

在差异平台(Windows,Mac OS X等)上有sqlite应用程序。

我认为将adb pull db文件发送到您的计算机并使用您喜欢的sqlite应用程序来检查db文件是个好主意。

答案 3 :(得分:0)

许多设备没有外部存储器支持而是拥有大内部存储器,但是使用外部存储器代码写入数据不会造成任何问题,因为这些设备具有与访问内部数据或移动数据相关的不同隐私策略。您可能必须使用文件资源管理器应用程序来查看此类设备中的文件,而不支持外部存储器。借助文件资源管理器应用程序,您可以查看应用程序目录或文件,无论您为应用程序创建了哪个。

答案 4 :(得分:0)

我想出了一种调试数据库的简单方法,无需生根或复制数据库。我刚刚在我的设备中安装了一个简单且免费的SQlite管理器,并将静态最终字符串添加到我的SQLLiteOpenHelper类中:

private static final String DATABASE_NAME = "myDatabaseName.db";
private static final String DATABASE_NAME_DEBUG_PATH = "/mnt/sdcard/";

然后,我像这样设置私有构造函数:

//Defaut constructor.
    private DatabaseHelper(Context context) {
        //Allow database access without rooting the device.
        super(context, (BuildConfig.BUILD_TYPE == "debug") ? DATABASE_NAME_DEBUG_PATH + DATABASE_NAME : DATABASE_NAME, null, DB_VERSION);
    }

通过这种方式,您的SQlite管理器会在您调试时找到您的数据库,因为它将位于您的SD中,您将能够毫无问题地看到它并且没有生根。