2017-09-04 2 views
1

データベースのテーブル数をカウントするのにCount_tablesメソッドを使用しますが、常に1を返します。データベース内のテーブル数(アンドロイド)

@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

おそらくchange cursor.getCount(); 〜へカーソル.getInt(0); https://developer.android.com/reference/android/database/Cursor.html#getInt(int) –

答えて

1

select count(*)を使用しています。これは、単一の行を持つカーソルと番号テーブルを持つエントリを返します。 COUNT(*)によって返されたカーソルの数のエントリではなく、行数を取得します

-

int count = cursor.getInt(0):あなたはその上cursor.getCount()を行うと、当然、あなたは常にあなたにshoudlのいずれかを使用する1.

を取得しますまたは

String SQL_GET_ALL_TABLES = "SELECT * FROM ... - すべてのテーブル名をカーソルの行として取得します。このカーソル上でcursor.getCount()を実行すると有効な値が返されます。

関連する問題