数据库中的表数(android)

时间:2017-09-04 15:01:26

标签: android android-sqlite

我使用Count_tables方法来计算数据库中的表数,但总是返回一个。

@Override
public void onCreate(SQLiteDatabase db) {


    db.execSQL("CREATE TABLE abb1  ( _ID  INTEGER PRIMARY KEY,name  TEXT )");
    db.execSQL("CREATE TABLE abb2  ( _ID  INTEGER PRIMARY KEY,name  TEXT )");
    db.execSQL("CREATE TABLE abb3  ( _ID  INTEGER PRIMARY KEY,name  TEXT )");
}


public int Count_tables(){
    int count = 0;
    String SQL_GET_ALL_TABLES = "SELECT count(*) FROM sqlite_master WHERE type = 'table' AND name != 'android_metadata' AND name != 'sqlite_sequence'";
    Cursor cursor = getReadableDatabase()
            .rawQuery(SQL_GET_ALL_TABLES, null);

    return cursor.getCount();;

}

1 个答案:

答案 0 :(得分:1)

您正在使用select count(*)。这将返回一个带有单行的游标和带有数字表的条目。当你对cursor.getCount()进行操作时,自然会得到1。

你应该使用:

int count = cursor.getInt(0) - 获取数字输入而不是按count(*)返回的光标行数

String SQL_GET_ALL_TABLES = "SELECT * FROM ... - 将所有表名称作为游标中的行。在此光标上执行cursor.getCount()将返回有效值。