如何获取Android SQL lite中数据库中存在的所有表的名称

时间:2011-05-30 14:36:14

标签: android sql sqlite

我无法找到一种从android中的数据库中获取/转储表名的方法。我知道:查询

SELECT * 
  FROM sqlite_master

上述语句会生成一个指向所有数据库/视图/表的元数据的游标。但是如何在我的数据库中获取我创建的所有表的名称?

3 个答案:

答案 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