从Java在SQL Server中插入多行

从Java在SQL Server中插入多行,java,sql,sql-server,jdbc,Java,Sql,Sql Server,Jdbc,我需要从Java代码中将多行插入SQL Server数据库(一次插入100行)。我该怎么做?目前我正在逐个插入,这看起来效率不高。使用批处理 查看Java的addBatch()、executeBatch()等方法 举个简单的例子,检查(但我建议使用PreparedStatement)您可以将一个很长的字符串传递给SQL,并将多个插入作为一条语句传递给SQL Server。但是,如果您正在执行参数化查询,这将不起作用。连接SQL字符串“通常是个坏主意” 你最好看看这个命令。它有一个问题,那就是对列

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

使用批处理

查看Java的addBatch()、executeBatch()等方法


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

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

你最好看看这个命令。它有一个问题,那就是对列的顺序等都很严格。但是它的方式很快

您可以使用创建批处理并执行它

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) {}
}
Connection=null;
PreparedStatement=null;
试一试{
connection=database.getConnection();
语句=connection.prepareStatement(SQL);
对于(int i=0;i
另见


sql server中是否有批处理语句,或者我是否需要使用api…?@Kaddy-我建议使用PreparedStatement在Java端使用批处理语句。我不能使用此语句,因为我没有文件……无论如何,谢谢……是的,编写文件是一个PITA之类的,但这是一个需要注意的好命令。:)在这种方法中,如果批次中的一条记录失败,会发生什么情况。。?失败记录之后的记录是否会被插入…我如何确保除了失败的记录之外,所有其他记录都被插入…?这实际上取决于使用的驱动程序。看见