执行批处理操作

为了提高对 SQL Server 数据库进行多项更新时的性能，Microsoft JDBC Driver for SQL Server 提供了将多项更新作为一个工作单元提交的功能，也称作“批处理”。

SQLServerStatement、SQLServerPreparedStatement 和 SQLServerCallableStatement 类都可用于提交批处理更新。addBatch 方法可用于添加命令。clearBatch 方法可用于清除命令列表。executeBatch 方法可用于提交要处理的所有命令。只有返回简单更新计数的数据定义语言 (Data Definition Language, DDL) 和数据操作语言 (Data Manipulation Language, DML) 语句可作为批处理的一部分运行。

executeBatch 方法返回一个由 int 值组成的数组，这些值对应于每个命令的更新计数。如果其中一条命令失败，则引发 BatchUpdateException，此时应使用 BatchUpdateException 类的 getUpdateCounts 方法检索更新计数数组。如果一条命令失败，则驱动程序会继续处理剩余的命令。但是，如果一条命令有语法错误，批处理中的语句就会失败。

如果不是必须使用更新计数，则可以先向 SQL Server 发送一条 SET NOCOUNT ON 语句。这将减少网络流量并同时提高应用程序的性能。

作为实例，在 SQL Server 2005 AdventureWorks 示例数据库中创建下表：

    CREATE TABLE TestTable
       (Col1 int IDENTITY,
        Col2 varchar(50),
        Col3 int);

在下面的实例中，将向此函数传递 AdventureWorks 示例数据库的打开连接，并使用 addBatch 方法创建要执行的语句，然后调用 executeBatch 方法向数据库提交批处理。

    public static void executeBatchUpdate(Connection con) {
       try {
          Statement stmt = con.createStatement();
          stmt.addBatch("INSERT INTO TestTable (Col2, Col3) VALUES ('X', 100)");
          stmt.addBatch("INSERT INTO TestTable (Col2, Col3) VALUES ('Y', 200)");
          stmt.addBatch("INSERT INTO TestTable (Col2, Col3) VALUES ('Z', 300)");
          int[] updateCounts = stmt.executeBatch();
          stmt.close();
       }
       catch (Exception e) {
          e.printStackTrace();
       }
    }

# 请参阅

通过 JDBC 驱动程序使用语句
发送有关本主题的反馈至 Microsoft。

© 2012 Microsoft。保留所有权利。