【问题标题】:Delete rows from sqlite3 DB not in a list of objects从 sqlite3 DB 中删除不在对象列表中的行
【发布时间】:2013-08-29 21:25:44
【问题描述】:

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

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

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

我的数据库包含:

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

然后我想从数据库中删除产品 D。

这是我的清单:

List<Product> products;

我正在考虑在列表上循环创建一个字符串数组serialNumbers of 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);

如何进行数据库查询?

【问题讨论】:

    标签: android sqlite


    【解决方案1】:

    您可以像这样构建 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);
    

    【讨论】:

      猜你喜欢
      • 2020-12-15
      • 1970-01-01
      • 2021-08-03
      • 2020-04-17
      • 1970-01-01
      • 2012-12-09
      • 2012-04-03
      • 2021-02-11
      相关资源
      最近更新 更多