Lop*_*ela 22 database sqlite android
我想删除满足任何多个条件的行.
例如,我传递了一个ID列表,我想删除所有这些行IDs(ID是唯一的).
这将是:
String[] ids = {"0", "1", "2", "3",...};
database.delete("rows" , "id=? OR id=? OR id=? OR id=? OR ..." , ids );
Run Code Online (Sandbox Code Playgroud)
有没有办法在没有多个的情况下紧凑OR?
waq*_*lam 57
您可以通过db.execSQL方法和SQL的IN关键字完成它.例如:
String args = TextUtils.join(", ", ids);
db.execSQL(String.format("DELETE FROM rows WHERE ids IN (%s);", args));
Run Code Online (Sandbox Code Playgroud)
Joa*_*son 17
你想要使用的是一个IN子句,类似于(有4个ID);
database.delete("rows", "id IN (?, ?, ?, ?)", ids );
Run Code Online (Sandbox Code Playgroud)
根据要求,这是(例如)你如何动态地做到这一点;
database.delete("rows",
"id IN (" + new String(new char[ids.length-1]).replace("\0", "?,") + "?)",
ids);
Run Code Online (Sandbox Code Playgroud)
小智 7
Android官方文档告诉我们使用execSQL不是删除记录的正确方法.
我想建议以下简单的方法.使用提供的delete()api.
String[] idArray = new String[] {"1", "2", "3"};
String idsCSV = TextUtils.join(",", idArray);
SQLiteDatabase db = getWritableDatabase();
if (db != null) {
db.delete("table_name", "id IN (" + idsCSV + ")", null);
db.close();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27658 次 |
| 最近记录: |