我使用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();;
}
答案 0 :(得分:1)
您正在使用select count(*)
。这将返回一个带有单行的游标和带有数字表的条目。当你对cursor.getCount()
进行操作时,自然会得到1。
你应该使用:
int count = cursor.getInt(0)
- 获取数字输入而不是按count(*)返回的光标行数
或
String SQL_GET_ALL_TABLES = "SELECT * FROM ...
- 将所有表名称作为游标中的行。在此光标上执行cursor.getCount()
将返回有效值。