我有一个包含某些“产品”对象的列表,并希望根据其唯一属性serialNumber
删除数据库中不在该列表中的所有产品行。
示例,如果我的列表包含:
我的数据库包含:
然后我想从数据库中删除产品D.
这是我的清单:
List<Product> products;
我正在考虑在列表上循环以创建serialNumbers
的字符串数组serialNumber
。
String[] serialNumbers;
for (int i=0; i<products.size(); i++){
//Insert serialNumbers in Array
}
然后像:
database.delete(MySQLiteHelper.TABLE_PRODUCTS, MySQLiteHelper.COLUMN_SERIALNUMBER + " NOT IN " + SerialNumbers, null);
我怎样才能进行数据库查询?
答案 0 :(得分:5)
您可以像这样构建inQuery:
StringBuilder inQuery = new StringBuilder();
inQuery.append("(");
boolean first = true;
for (String item : serialNumbers) {
if (first) {
first = false;
inQuery.append("'").append(item).append("'");
} else {
inQuery.append(", '").append(item).append("'");
}
}
inQuery.append(")");
然后使用它:
database.delete(MySQLiteHelper.TABLE_PRODUCTS, MySQLiteHelper.COLUMN_SERIALNUMBER + " NOT IN " + inQuery.toString(), null);