计算我的数据库中的所有行的方法崩溃了我的应用程序

时间:2016-11-12 23:11:49

标签: java android exception android-sqlite illegalstateexception

我正在尝试计算我的应用中的所有行。一旦我调用以下方法,应用程序就会崩溃:

 var scrollBarWidth = element.offsetWidth - element.clientWidth;

例外:

  

引起:java.lang.IllegalStateException:尝试重新打开   已关闭的对象:SQLiteQuery:SELECT * FROM orte

有人可以告诉我我做错了吗?

2 个答案:

答案 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块中的光标以避免泄漏。