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