我正在尝试计算我的应用中的所有行。一旦我调用以下方法,应用程序就会崩溃:
var scrollBarWidth = element.offsetWidth - element.clientWidth;
例外:
引起:java.lang.IllegalStateException:尝试重新打开 已关闭的对象:SQLiteQuery:SELECT * FROM orte
有人可以告诉我我做错了吗?
答案 0 :(得分:2)
您尝试获取光标计数,但上面的行会关闭与数据库的连接。您应首先获得计数,然后关闭连接,例如:
public int getDBPlacesCount() {
String countQuery = "SELECT * FROM " + TABLE_DB_VERLADESTELLEN_Eintrag;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(countQuery, null);
int count = cursor.getCount();
cursor.close();
// return count
return count
}
答案 1 :(得分:1)
有人可以告诉我我做错了吗?
您已尝试从已read
的光标closed
,这是错误的。
您需要更改代码,如下所示:
public int getDBPlacesCount() {
try {
String countQuery = "SELECT * FROM " + TABLE_DB_VERLADESTELLEN_Eintrag;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(countQuery, null);
long count = cursor.getCount();
// return count
return count;
} catch(SQLException exe) {
//log exceptions
} finally {
if(cursor != null) {
//always close the cursor in finally and make it null
cursor.close();
cursor = null;
}
}
}
另外,请确保您正在关闭finally
块中的光标以避免泄漏。