Android 如何从 ORMLITE 中删除记录?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/12108195/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
how to delete a record from ORMLITE?
提问by Sourabh Saldi
I need to delete a record from ORMLite Database I can delete a record by id using as below
我需要从 ORMLite 数据库中删除一条记录我可以使用下面的 id 删除一条记录
@Override
public void Delete(int id) throws SQLException {
this.dao.deleteById(id);
}
but what if I have to delete a record from same table not by id but by name or any other field I want something like
但是如果我必须从同一个表中删除一条记录,而不是按 id 而是按名称或我想要的任何其他字段,该怎么办
public void Deletefromcanteen(String name,MealType mealtype) {
this.dao.deletebyName(name);
}
what query should i write using querybuilder to delete a record where name = name and mealtype = say (lunch)
我应该使用 querybuilder 编写什么查询来删除名称 = 名称和膳食类型 = 说(午餐)的记录
I tried something like this in my databasehelper class
我在我的 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) {
...
}
}
回答by Ilya Demidov
deleteBuilder.where().eq("FIELD_NAME", arg);
deleteBuilder.delete();
Update:
更新:
For example :
例如 :
//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();
Good luck!
祝你好运!
回答by cjk
To save building a query, you can do a select to find the ID, then do a delete by ID. Thsi will be straightforward if you already have the select query set up for this table.
要保存构建查询,您可以选择查找 ID,然后按 ID 删除。如果您已经为该表设置了选择查询,则此操作将很简单。
回答by Airon Tark
It can be done also like that
也可以这样做
DatabaseHelper.getInstance().getDao(YourObject.class).delete(yourObjectInstance);
回答by David Rawson
If you are using Kotlin, you will need to do something like this instead since the type inference is not currently working correctly for the fluent syntax:
如果您使用的是 Kotlin,您将需要执行以下操作,因为当前类型推断对于 fluent 语法无法正常工作:
val deleteBuilder = dao.deleteBuilder()
val where = deleteBuilder.where().eq("address", address)
deleteBuilder.setWhere(where)
deleteBuilder.delete()
回答by AmiNadimi
If you already have an instance of the object (or object list) you want to delete, just do :
如果您已经有要删除的对象(或对象列表)的实例,请执行以下操作:
//Get helper
DatabaseHelper helper =
OpenHelperManager.getHelper(App.getContext(), DatabaseHelper.class);
// delete 'em !
helper.getDao(YourObject.class).delete(yourObjectInstance);
If you don't have the instance to delete or you want to do it SQL way(!):
如果您没有要删除的实例,或者您想以 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();
If you need a more complicated Where
logic, then use deleteBuilder.where().or()
or deleteBuilder.where().and()
to add more constraints.
如果您需要更复杂的Where
逻辑,则使用deleteBuilder.where().or()
或deleteBuilder.where().and()
添加更多约束。