#android #sqlite
#Android #sqlite
Вопрос:
Друзья,
я пытаюсь удалить строку, а затем, когда я пытаюсь извлечь все записи из базы данных, я получаю исключение, кто-нибудь подскажет мне, какую ошибку я делаю?
private static final String DATABASE_NAME = "example.db";
private static final int DATABASE_VERSION = 1;
private static final String TABLE_NAME = "table1";
private Context context;
private SQLiteDatabase db;
public dbHelper(Context context) {
this.context = context;
OpenHelper openHelper = new OpenHelper(this.context);
this.db = openHelper.getWritableDatabase();
this.insertStmt = this.db.compileStatement(INSERT);
}
public List<String> selectAll() {
List<String> list = new ArrayList<String>();
Cursor cursor = this.db.query(TABLE_NAME, new String[] { "name" },
null, null, null, null, "name desc");
if (cursor.moveToFirst()) {
do {
list.add(cursor.getString(0));
} while (cursor.moveToNext());
}
if (cursor != null amp;amp; !cursor.isClosed()) {
cursor.close();
}
return list;
}
public int DeleteName(String name)
{
int rowsEffected = this.db.delete(TABLE_NAME,"name=?", new String[] {name});
this.db.close();
return rowsEffected;
}
будем признательны за любую помощь.
Комментарии:
1. Какое исключение вы получаете?
2. Какого рода исключение у вас есть? Используете ли вы 1 поток для методов delete и get?
3. да, тот же поток … используя тот же объект для вызова функции удаления, затем selectAll …. я предполагаю, что это проблема, нужно ли мне брать новую ссылку после удаления строки?
Ответ №1:
Открывали ли вы базу данных перед вызовом selectAll()? Вы закрыли его методом удаления.
В любом случае рекомендуется открывать базу данных перед началом работы с ней и закрывать ее после завершения работы.