2014-07-03 73 views
0

試行在此連結的SQLite數據庫:的Android的SQLite數據庫處理器

Android Hive SQLite

用下面的代碼片段的最後一行,在那一刻,我只是想在該獲得數num變量:

DatabaseHandler db = new DatabaseHandler(this); 

    /** 
    * CRUD Operations 
    * */ 
    // Inserting Contacts 
    Log.d("Insert: ", "Inserting .."); 
    db.addContact(new Contact(5, "Bill", "9100000000"));   
    db.addContact(new Contact(6, "Fred", "9199999999")); 
    db.addContact(new Contact(7, "George", "9522222222")); 
    db.addContact(new Contact(8, "Jack", "9533333333")); 

    num = db.getContactsCount(); 

這是從數據庫處理器的方法:

// Getting contacts Count 
public int getContactsCount() { 
    String countQuery = "SELECT * FROM " + TABLE_CONTACTS; 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor = db.rawQuery(countQuery, null); 
    cursor.close(); 

    // return count 
    return cursor.getCount(); 
} 

LogCat說'嘗試重新打開已關閉的對象'。通常會導致什麼?

回答

3

問題出在getContactsCount()這裏。

cursor.close(); 

// return count 
return cursor.getCount(); 

你已經關閉了光標,之後你正在查詢它的數量。爲了使它工作,像這樣改變你的代碼

int count = cursor.getCount(); 
cursor.close(); 
return count; 
+1

哦,這是一個典型的新手的錯誤。我怎麼能???現在工作正常Waqar。 – acl77

0

我覺得@Waqar Ahmed是對的。

試試這個:

public int getContactsCount() { 
    String countQuery = "SELECT * FROM " + TABLE_CONTACTS; 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor = db.rawQuery(countQuery, null); 
    int contactsCount = cursor.getCount(); 
    cursor.close(); 

    // return count 
    return contactsCount; 
}