使用JDBC更新多行

时间:2011-12-28 10:59:51

标签: java mysql sql jdbc

我有一个非常简单的SQL“更新表,其中ID在(1,2,3)”

我在做什么时

String sql = "update table where ID in (?)";
List<Integer> ids = new ArrayList();
ids.add(1);
ids.add(2);
ids.add(3);
jdbc.update(sql, new Object[] { ids });

我在输出中收到了错误的sql

update table where ID in ('1,2,3')

如何摆脱这个额外的报价?

2 个答案:

答案 0 :(得分:4)

很遗憾,您无法在Array中传递Parameter作为PreparedStatement。类似的问题可以在这里找到:

PreparedStatement IN clause alternatives?

可以在这里找到一些替代方案:

http://www.javaranch.com/journal/200510/Journal200510.jsp#a2

答案 1 :(得分:0)

您的SQL语句必须采用以下形式:

UPDATE table_name
SET column1=?, column2=?,...
WHERE some_column=some_value

即。请注意

  • 您必须指定要更新的列
  • 对于您需要提供的每个值,您需要一个占位符?符号
  • 对于每个值,您需要相应的setInt(pos, value)来电

查看PreparedStatement tutorial了解详情。摘录如下:

String updateString =
    "update " + dbName + ".COFFEES " +
    "set SALES = ? where COF_NAME = ?";
updateSales = con.prepareStatement(updateString);
updateSales.setInt(1, 100);
....