Je dois supprimer un enregistrement de la base de données ORMLite. Je peux supprimer un enregistrement par ID en utilisant les options ci-dessous.
@Override
public void Delete(int id) throws SQLException {
this.dao.deleteById(id);
}
mais que se passe-t-il si je dois supprimer un enregistrement de la même table, pas par son identifiant mais par son nom ou par tout autre champ.
public void Deletefromcanteen(String name,MealType mealtype) {
this.dao.deletebyName(name);
}
quelle requête dois-je écrire en utilisant querybuilder pour supprimer un enregistrement où nom = nom et type de repas = dire (déjeuner)
J'ai essayé quelque chose comme ça dans ma classe databasehelper
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) {
...
}
}
deleteBuilder.where().eq("FIELD_NAME", arg);
deleteBuilder.delete();
Mettre à jour:
Par exemple :
//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();
Bonne chance!
Si vous utilisez Kotlin, vous devrez procéder de la sorte, car l'inférence de type ne fonctionne pas correctement pour la syntaxe courante:
val deleteBuilder = dao.deleteBuilder()
val where = deleteBuilder.where().eq("address", address)
deleteBuilder.setWhere(where)
deleteBuilder.delete()
Cela peut être fait aussi comme ça
DatabaseHelper.getInstance().getDao(YourObject.class).delete(yourObjectInstance);
Si vous avez déjà une instance de l'objet (ou de la liste d'objets) que vous souhaitez supprimer, procédez comme suit:
//Get helper
DatabaseHelper helper =
OpenHelperManager.getHelper(App.getContext(), DatabaseHelper.class);
// delete 'em !
helper.getDao(YourObject.class).delete(yourObjectInstance);
Si vous n'avez pas l'instance à supprimer ou si vous voulez le faire de manière SQL (!):
//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", "FIELD_VALUE");
deleteBuilder.delete();
Si vous avez besoin d'une logique Where
plus compliquée, utilisez deleteBuilder.where().or()
ou deleteBuilder.where().and()
pour ajouter davantage de contraintes.
Pour sauvegarder la construction d'une requête, vous pouvez effectuer une sélection pour trouver l'ID, puis effectuer une suppression par ID. Cela sera simple si vous avez déjà configuré la requête de sélection pour cette table.