问题描述
||
我找不到从Android的数据库中的文本视图中获取/转储表名的方法。我知道:查询
SELECT *
FROM sqlite_master
上面的语句导致一个游标指向所有数据库/视图/表的元数据。但是,如何获取我在数据库中创建的所有表的名称?
解决方法
如果要检索数组(或可迭代字符串的任何结构)中的信息,则可以使用以下方法:
public String[] getDBNames(){
String[] result;
try {
StringBuilder sb = new StringBuilder();
sb.append(\"SELECT name FROM sqlite_master \");
sb.append(\"WHERE type IN (\'table\',\'view\') AND name NOT LIKE \'sqlite_%\' \");
sb.append(\"UNION ALL \");
sb.append(\"SELECT name FROM sqlite_temp_master \");
sb.append(\"WHERE type IN (\'table\',\'view\') \");
sb.append(\"ORDER BY 1\");
Cursor c = _db.rawQuery(sb.toString(),null);
c.moveToFirst();
result = new String[c.getCount()];
int i = 0;
while (c.moveToNext()) {
result[i]= c.getString(c.getColumnIndex(\"name\"));
i++;
}
c.close();
}
catch(SQLiteException e){
Log.e(\"OOPS\",e);
}
return result;
}
, 不确定您要的是SQL还是Android渲染代码,但是根据SQLite FAQ,此SQL应该可以为您提供名称:
SELECT name FROM sqlite_master
WHERE type=\'table\'
ORDER BY name;
, 另外,如果您只是想浏览数据库,则可以将其加载到adb shell的sqlite3中并运行\“。tables \”:
cd data/data/com.whatever.appname/databases
sqlite3 DBNAME
.tables