Android курсор или исключение базы данных не закрыт - PullRequest
0 голосов
/ 19 октября 2011

Я пытаюсь вставить строку в таблицу базы данных sqlite, но когда я вызываю метод insertOrThrow () (Class Sqlitedatabase), я получаю следующее исключение: «Приложение не закрывало курсор или объект базы данных, который был открыт здесь»

Я не понимаю, почему:

вот код для основного класса:

         ........
         ContentValues values = new ContentValues();
         values.put("nome", info.getString("nome"));
         values.put("ingredienti", info.getJSONObject("ingredienti").toString());
         values.put("descrizione", info.getString("descrizione"));
         values.put("persone", info.getString("persone"));
         values.put("tempo", info.getString("tempo"));
         values.put("facilita", info.getString("facilita"));
         if(info.getString("url_foto")!="/images/ricettapredefinita.jpg")
            values.put("foto", true);
         else
            values.put("foto", false);
         values.put("categoria", info.getString("categoria"));
         values.put("zona", info.getString("regione"));
         values.put("ethnos", info.getString("etnica"));
         values.put("voto", info.getString("voto"));
        // Open database
        DbAdapter mDbHelper = new DbAdapter(Main.this);
        mDbHelper.open_w();
        long ritorno=mDbHelper.createRecipe(values);

Это основные методы для класса DbAdapter:

private static final String DATABASE_CREATE =
    "CREATE TABLE recipes (" +
    "_id INTEGER PRIMARY KEY AUTOINCREMENT," +
    "nome VARCHAR(255) NOT NULL," +
    "ingredienti TEXT NOT NULL," +
    "descrizione TEXT " +
    "persone SMALLINT," +
    "tempo TINYINT(3)," +
    "facilita SMALLINT," +
    "foto BOOL," +
    "voto TINYINT(3)," +
    "categoria VARCHAR(255)," +
    "zona VARCHAR(255)," +
    "ethnos VARCHAR(255));"; 
public long createRecipe(ContentValues info) {
    return mDb.insertOrThrow(DATABASE_TABLE, null, info);
}
private static class DatabaseHelper extends SQLiteOpenHelper {
    DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(DATABASE_CREATE);
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                + newVersion + ", which will destroy all old data");
        db.execSQL("DROP TABLE IF EXISTS notes");
        onCreate(db);
    }
}
public DbAdapter open_w() throws SQLException {
    mDbHelper = new DatabaseHelper(mCtx);
    mDb = mDbHelper.getWritableDatabase();
    return this;
}

У кого-нибудь есть идея, в чем может быть проблема?

Ответы [ 2 ]

1 голос
/ 19 октября 2011

Вы должны добавить mDbHelper.close (); когда ты уверен, что мне больше не нужен mDbHelper. Я решил ту же проблему, сделав это. Я надеюсь, что работает на тебя.

1 голос
/ 19 октября 2011

Вы должны добавить mDbHelper.close() в конце.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...