View/edit Android 模拟器上的 SQLite 数据库

View/edit SQLite database on Android emulator

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

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

您总是可以包含查找数据库信息的方法。

例如你可以查询 sqlite_master table 比如:-

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

相当于:-

    SELECT * FROM sqlite_master

PRAGMA 语句允许您 interrogate/change 内部 PRAGMA Statements

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

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

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

    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 则该值将无法获得。