在此链接上试用此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正在说'尝试重新打开已经关闭的对象'。通常会导致什么?
答案 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;
}