2017-09-04 46 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()將返回一個有效值。