我嘗試使用Collection
和StringBuilder
中包含的對象進行SQL查詢。這似乎是一個非常簡單的代碼來寫:集合和StringBuilder的奇怪行爲
public String makeQuery(Collection<MyObject> collection) {
logger.info("The size of the collection is {}", collection.size());
StringBuilder queryString = new StringBuilder("INSERT INTO my_table (my_column) VALUES ");
int i = 1;
for (MyObject object : collection) {
queryString.append("('");
queryString.append(object.get...);
queryString.append("')");
if (i == collection.size()) {
queryString.append(";");
} else {
queryString.append(",");
}
i++;
}
logger.info("The size of the collection is {}", collection.size());
return queryString.toString();
}
對於我來說,這個代碼應該工作,但有時我有這樣的結果:
INSERT INTO my_table (my_column) VALUES ('a'),('b');('c'),
這怎麼可能,半結腸是不最後的字符?
編輯
我在循環之前和之後添加日誌和集合的大小總是相同的。
使用'PreparedStatement'。另外看看[這裏](http://stackoverflow.com/questions/35205617/is-there-simple-regex-to-convert-java-string-list-to-oracle-in-condition/)。 – Mena
是集合共享給其他線程? – AdamSkywalker
@AdamSkywalker只有當我的程序中有一個錯誤。我會看看那個。 – cheb1k4