共用方式為


執行批次作業

在對 SQL Server 資料庫進行多重更新時,為了改進效能,Microsoft SQL Server 2005 JDBC Driver 提供以單一工作單元提交多重更新的功能,這也稱為批次。

SQLServerStatementSQLServerPreparedStatementSQLServerCallableStatement 類別都可以用來提交批次更新。addBatch 方法是用來加入命令。clearBatch 方法是用來清除命令清單。executeBatch 方法是用來提交所有命令以供處理。只有傳回簡單更新計數的資料定義語言 (DDL)  和資料操作語言 (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 驅動程式使用陳述式