我无法找到一种从android中的数据库中获取/转储表名的方法。我知道:查询
SELECT *
FROM sqlite_master
上述语句会生成一个指向所有数据库/视图/表的元数据的游标。但是如何在我的数据库中获取我创建的所有表的名称?
答案 0 :(得分:2)
不确定您是否要求SQL或Android呈现代码,但根据SQLite FAQ,此SQL应该可以为您提供名称:
SELECT name FROM sqlite_master
WHERE type='table'
ORDER BY name;
答案 1 :(得分:2)
如果要检索数组中的信息(或任何可以遍历字符串的结构),可以创建一个类似的方法:
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;
}
答案 2 :(得分:0)
另外,如果您只是想在数据库中搜索,可以在adb shell中的sqlite3中加载它并运行“.tables”:
cd data/data/com.whatever.appname/databases
sqlite3 DBNAME
.tables