在Android模拟器上查看/编辑SQLite数据库

时间:2017-10-03 15:46:28

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

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

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

1 个答案:

答案 0 :(得分: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,因此无法正确表示某些值,例如double和float,如果是BLOB,则该值将无法获得。