我需要从我的Java代码中将多行插入SQL Server数据库(每次100个)。我怎样才能做到这一点?目前我正在逐个插入,这看起来效率不高。
答案 0 :(得分:15)
您可以使用PreparedStatement#addBatch()
创建批处理,并executeBatch()
执行批处理。
Connection connection = null;
PreparedStatement statement = null;
try {
connection = database.getConnection();
statement = connection.prepareStatement(SQL);
for (int i = 0; i < items.size(); i++) {
Item item = items.get(i);
statement.setString(1, item.getSomeValue());
// ...
statement.addBatch();
if ((i + 1) % 100 == 0) {
statement.executeBatch(); // Execute every 100 items.
}
}
statement.executeBatch();
} finally {
if (statement != null) try { statement.close(); } catch (SQLException logOrIgnore) {}
if (connection != null) try { connection.close(); } catch (SQLException logOrIgnore) {}
}
另见:
答案 1 :(得分:2)
答案 2 :(得分:1)
您可以将一个非常长的字符串传递给SQL,并将多个插入作为一个语句传递给SQL Server。但是,如果您正在进行参数化查询,这将不起作用。连接的SQL字符串是“通常不好的主意。”
查看BULK INSERT命令可能会更好。它存在关于列顺序等问题的问题。但它的方式快!