2017-09-04 48 views
1

我使用Count_tables方法计数数据库中的表的数量,但始终返回一个。数据库中表的数量(android)

@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

可能会改变cursor.getCount(); cursor.getInt(0); https://developer.android.com/reference/android/database/Cursor.html#getInt(int) –

回答

1

您正在使用select count(*)。这将返回一个带有单行和光标的光标,并带有数字表。当你对做cursor.getCount(),当然,你总是会得到1

您shoudl要么使用:

int count = cursor.getInt(0) - 获取数字输入而不是行数光标通过COUNT(*)

返回或者

String SQL_GET_ALL_TABLES = "SELECT * FROM ... - 获取所有表名作为游标中的行。在这个游标上做cursor.getCount()将返回一个有效值。