SQL中的多行插入来自Java

时间:2010-06-22 17:18:23

标签: java sql sql-server jdbc

我需要从我的Java代码中将多行插入SQL Server数据库(每次100个)。我怎样才能做到这一点?目前我正在逐个插入,这看起来效率不高。

3 个答案:

答案 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)

使用批次。

查看Java的Statement

的addBatch(),executeBatch()等方法

举一个简单的例子,检查here(但我建议使用PreparedStatement)

答案 2 :(得分:1)

您可以将一个非常长的字符串传递给SQL,并将多个插入作为一个语句传递给SQL Server。但是,如果您正在进行参数化查询,这将不起作用。连接的SQL字符串是“通常不好的主意。”

查看BULK INSERT命令可能会更好。它存在关于列顺序等问题的问题。但它的方式快!