Attempt to Reopen an Already-Closed Object SQLitedatabase

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

Try this.

public void removeAndInsert(String configRaw) {
SQLiteDatabase sqlite = null;
try {
sqlite = dbHelper.getWritableDatabase();
synchronized(sqlite) {
removeAndInsert(configRaw, sqlite);
}
.....
finally {
if (sqlite != null && sqlite.isOpen()) {
sqlite.close();
}
}

void removeAndInsert(String configRaw, SQLiteDatabase sqlite) throws SQLException {
ContentValues initialValues = new ContentValues();
initialValues.put(DBOpenHelper.CONFIG_CACHE_RAW_DATA, configRaw);
sqlite.delete(DBOpenHelper.CONFIG_CACHE_TABLE_NAME, null, null);
sqlite.insert(DBOpenHelper.CONFIG_CACHE_TABLE_NAME, null, initialValues);
}

Android Studio - attempt to re-open an already-closed object: SQLiteDatabase

Try to remove:

public void onCreate(SQLiteDatabase db) {
db.execSQL(SQL_CREATE_USER);
db.close(); // remove this line
}

And also this:

onCreate(this.getWritableDatabase());

From onUpgrade() method, add:

db.execSQL("DROP TABLE IF EXISTS " + YOUR_TABLE_NAME);
onCreate(db);

Attempt to re-open an already closed object error Android SQLite

Try this :

public List<Task> getAllTasks() {
List<Task> taskList = new ArrayList<Task>();

String selectQuery = "SELECT * FROM " + TABLE_TASKS;

SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
try {

if (cursor.moveToFirst()) {
do {
Task task = new Task();
task.setId(cursor.getInt(0));
task.setTaskName(cursor.getString(1));
task.setStatus(cursor.getInt(2));
// Adding contact to list
taskList.add(task);
} while (cursor.moveToNext());
}
finally
{
if (cursor != null)
{
cursor.close();
db.close();
}

// return task list
return taskList;
}

And in your OnCreat() you should not close your DB.



Related Topics



Leave a reply



Submit