2013-08-29 97 views
2

我有一個包含某些'產品'對象的列表,並希望根據其唯一屬性serialNumber刪除數據庫中不在該列表中的所有產品行。從sqlite3刪除行不在對象列表中的數據庫

例如,如果我的名單上有:

  • 產品A
  • 產品B
  • 產物C

我的數據庫包含:

  • 產品A
  • 產品B
  • 產物C
  • 產物d

然後我想從DB中移除產品d。

這是我的名單:

List<Product> products; 

我想循環名單上創建一個字符串數組serialNumberserialNumbers的。

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

你可以建設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); 
+0

謝謝,這完全應該做的伎倆 – Distwo