2013-11-20 69 views
1

我想執行下面的SQL語句:的Android SQLiteStatement和UPDATE SET ... WHERE IN(1,2,3)

UPDATE X SET y=10 WHERE z IN (1,2,3,4); 

由於集可以包含任意數量的元素,我創建了以下SQL字符串語句:

UPDATE X SET y=? WHERE z IN (?); 

接下來,我很好地預編譯它,並用SQLiteStatement類bidning參數以下列方式:

statement.bindLong(1, myLong); 
statement.bindString(2, "1,2,3,4"); 
statement.executeUpdateDelete(); 

我希望它天真地工作。沒門。如果只有一個值作爲第二個參數,

statement.bindString(2, "1"); 

它的工作。否則沒有機會。

是不是某種錯誤的?任何其他建議如何在優雅的方式做?當然,我可以直接將值放入String語句中:

UPDATE X SET y=? WHERE z IN (?); 

但是然後預編譯是不可能的。 :(

+0

是,使用'與輸入參數的聲明'沒有按」牛逼的工作非常好,'IN'關鍵字。 – waqaslam

回答

1

你不能在一個調用綁定許多多頭

你應該使用一個SQL字符串語句喜歡做的事:?

UPDATE X SET y=? WHERE z IN (?,?,?,?); 
+0

但我不事先知道有多少元素將在這組,所以沒有辦法。 – user2707175

+0

凡貴元素從何而來? – gahfy

+0

用戶選擇(用戶有多少元素選擇在屏幕中,所以對於每個元素我有數據庫ID和接下來我執行數據庫中的更新操作)。 – user2707175