这是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循环中插入或更新数百万行的最佳方法。
答案 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();