Как удалить запись с ORMLITE?
Мне нужно удалить запись из базы данных ORMLite. Я могу удалить запись по идентификатору, используя ниже:
@Override
public void Delete(int id) throws SQLException {
this.dao.deleteById(id);
}
но что, если мне нужно удалить запись из той же таблицы не по идентификатору, а по имени или в любом другом поле
Я хочу что-то вроде
public void Deletefromcanteen(String name,MealType mealtype) {
this.dao.deletebyName(name);
}
какой запрос я должен писать с помощью querybuilder для удаления записи, где name = name и mealtype = say (lunch)
Я пробовал что-то вроде этого в моем классе базы данных
public void deletefromcanteen(int id, String mealtype) {
try {
Dao<CanteenLog, Integer> canteenDao = getCanteen();
DeleteBuilder<CanteenLog, Integer> deleteBuilder = canteenDao
.deleteBuilder();
deleteBuilder.where().eq("user_id", id).and().eq("meal", mealtype);
canteenDao.delete(deleteBuilder.prepare());
} catch (Exception e) {
...
}
}
Ответы
Ответ 1
deleteBuilder.where().eq("FIELD_NAME", arg);
deleteBuilder.delete();
Update:
Например:
//Get helper
DatabaseHelper helper = OpenHelperManager.getHelper(App.getContext(), DatabaseHelper.class);
//get dao
Dao dao = helper.getDao(YOUR_CLASS.class);
//delete elements from table in field by arg
DeleteBuilder<CanteenLog, Integer> deleteBuilder = dao.deleteBuilder();
deleteBuilder.where().eq("FIELD_NAME", arg);
deleteBuilder.delete();
Удачи!
Ответ 2
Чтобы сохранить построение запроса, вы можете сделать выбор, чтобы найти идентификатор, а затем выполнить удаление по идентификатору. Thsi будет прост, если у вас уже есть запрос выбора, настроенный для этой таблицы.
Ответ 3
Это можно сделать так же, как
DatabaseHelper.getInstance().getDao(YourObject.class).delete(yourObjectInstance);