【问题标题】:View/edit SQLite database on Android emulator在 Android 模拟器上查看/编辑 SQLite 数据库
【发布时间】:2018-03-14 21:15:25
【问题描述】:

我正在 Mac OS 上的 Android Studio 2.3 中开发一个应用程序(使用 SQLite),我想查看 SQLite 数据库,但似乎找不到 sqlite 文件。 AVM 文件,特别是 sqlite 文件在哪里?

我找到了 AVD 文件夹 /Users/<my name>/.android/avd/Pixel_XL_API_26.avd 但找不到用户生成的数据。有什么建议吗?

【问题讨论】:

标签: android macos android-studio android-sqlite avd


【解决方案1】:

您始终可以包含查找有关数据库信息的方法。

例如,您可以查询 sqlite_master 表,例如:-

    Cursor csr = db.query("sqlite_master",null,null,null,null,null,null);

相当于:-

    SELECT * FROM sqlite_master

这些是 PRAGMA 语句,可让您询问/更改内部结构 PRAGMA Statements

注意使用rawQuery 将信息获取到游标中,但使用execSQL 进行更改,例如分别设置和获取user_version(数据库版本):-

    db.execSQL("PRAGMA user_version=" + Integer.toString(version));
    Cursor csr = db.rawQuery("PRAGMA user_version",null);

您还可以查看数据,输出到日志,在基于某些东西的表中(其中表名将更改为适当的表名):-

    Cursor csr = db.query("tablename",null,null,null,null,null,null);
    String logdata;
    while (csr.moveToNext()) {
        Log.d("DBINFO","Row " + csr.getPosition());
        logdata = "";
        for (int i =0; i < csr.getColumnCount(); i++) {
            String val;
            try {
                val = csr.getString(i);
            }
            catch (Exception e) {
                val = "unobtainable";
            }
            logdata = logdata + "\t\nColumn Name=" +
                    csr.getColumnName(i) +
                    "   Value=" + val;
        }
        Log.d("DBINFO",logdata);
    }
    csr.close();

注意!这仅使用getString,因此无法正确表示某些值,例如双精度和浮点数,如果是 BLOB,则该值将无法获得。

【讨论】:

猜你喜欢
  • 2013-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
  • 1970-01-01
  • 1970-01-01
  • 2020-03-07
  • 2010-12-03
相关资源
最近更新 更多