Android SQLite DatabaseHandler

时间:2014-07-03 07:35:14

标签: android sqlite

在此链接上试用此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();

这是DatabaseHandler的方法:

// 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正在说'尝试重新打开已经关闭的对象'。通常会导致什么?

2 个答案:

答案 0 :(得分:3)

此问题出现在getContactsCount()方法中。

 cursor.close();

 // return count
 return cursor.getCount();

你已关闭光标,之后你正在查询它的数量。要使它工作,请像这样更改代码

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

答案 1 :(得分: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;
}