Java PreparedStatement语法

时间:2010-09-14 03:10:34

标签: java sql syntax prepared-statement

这是java中预准备语句的正确语法:

INSERT INTO table (id, version, data)
  VALUES (?, ?, ?)
  ON DUPLICATE KEY UPDATE 
    data = IF(version > values(version), data, values(data)),
    version = IF(version > values(version), version, values(version))

我正在寻找利用PreparedStatement的addBatch在java中的for循环中插入或更新数百万行的最佳方法。

1 个答案:

答案 0 :(得分:2)

如果SQL语句正确,则需要按如下方式将其包装起来:

String sql = ...
PreparedStatement prep;
prep = conn.prepareStatement(sql);
prep.setInt(1, x);
prep.setString(2, y);
prep.setString(3, z);
prep.execute();

要使用addBatch,请使用:

String sql = ...
PreparedStatement prep;
prep = conn.prepareStatement(sql);
for (...) {
    prep.setInt(1, x);
    prep.setString(2, y);
    prep.setString(3, z);
    prep.addBatch();
}
prep.execute();