Проблема с выборкой данных SQLite после удаления строки?

#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()? Вы закрыли его методом удаления.

В любом случае рекомендуется открывать базу данных перед началом работы с ней и закрывать ее после завершения работы.