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

问题描述

|| 我找不到从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
    

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...