1

私がそのようなものを使用するときgetPesoCount()

Log.v("SQL", String.valueOf(getPesoCount()));

エラーが発生します:

致命的な例外:メイン
java.lang.IllegalStateException:すでに閉じられているオブジェクトを再度開く試み:android.database.sqlite.SQLiteQuery(mSql = SELECT * FROM pesoTable).. ..

 public void addPeso(int peso, String date) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_PESO, peso); // Contact Name
        values.put(KEY_DATE, date); // Contact Phone Number

        // Inserting Row
        db.insert(TABLE_PESO, null, values);
        Log.v("SQL", String.valueOf(getPesoCount()));
        db.close(); // Closing database connection

    }


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

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

を使用しない場合 getPesoCount()、エラーは発生しません。

誰かが私を助けることができますか?

4

2 に答える 2

2
attempt to re-open an already-closed object:

例外はあなたに多くを教えてくれます!

cursorさらに使用したい場合はcursor.close();、もう必要ないことが確実なときに電話をかけないでください。

于 2012-12-02T20:57:14.240 に答える
0
 public void addPeso(int peso, String date) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_PESO, peso); // Contact Name
        values.put(KEY_DATE, date); // Contact Phone Number

        // Inserting Row
        db.insert(TABLE_PESO, null, values);
        Log.v("SQL", String.valueOf(getPesoCount(db)));
        db.close(); // Closing database connection

    }




    public int getPesoCount(db) {
        String countQuery = "SELECT  * FROM " + TABLE_PESO;
        Cursor cursor = db.rawQuery(countQuery, null);
        int count = cursor.getCount();
        cursor.close();
        return count;
    }
于 2012-12-02T20:58:30.093 に答える