2

我有一个包含一些“产品”对象的列表,并希望根据其唯一属性删除数据库中不在该列表中的所有产品行serialNumber

例如,如果我的列表包含:

  • 产品A
  • 产品B
  • 产品C

我的数据库包含:

  • 产品A
  • 产品B
  • 产品C
  • 产品 D

然后我想从数据库中删除产品 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);

我怎么能做数据库查询?

4

1 回答 1

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);
于 2013-08-29T21:47:25.160 回答