共用方式為


為了使用預存程序來修改 SQL Server 資料庫中的資料,Microsoft SQL Server 2005 JDBC Driver 提供了 SQLServerCallableStatement 類別。使用 SQLServerCallableStatement 類別時,您可以呼叫會修改資料庫中資料的預存程序,並傳回受影響的資料列計數 (也稱為更新計數)。

使用 SQLServerCallableStatement 類別設定好預存程序的呼叫之後,接著便可以使用 executeexecuteUpdate 方法呼叫預存程序。executeUpdate 方法會傳回 int 值,其中包含受到預存程序影響的資料列數目,但是 execute 方法則不會。如果使用 execute 方法並想要取得受影響的資料列計數,則您可以在執行預存程序之後呼叫 getUpdateCount 方法。

注意

如果想要 JDBC 驅動程式傳回所有更新計數 (包括任何可能已引發之觸發程序所傳回的更新計數),請將 lastUpdateCount 連接字串屬性設為 "false"。如需 lastUpdateCount 屬性的詳細資訊,請參閱<設定連接屬性>。

例如,在 SQL Server 2005 AdventureWorks 範例資料庫中建立下列資料表和預存程序:

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

CREATE PROCEDURE UpdateTestTable
   @Col2 varchar(50),
   @Col3 int
AS
BEGIN
   UPDATE TestTable
   SET Col2 = @Col2, Col3 = @Col3
END;

在下列範例中,連至 AdventureWorks 範例資料庫的開啟連接會傳遞到函數,execute 方法則用於呼叫 UpdateTestTable 預存程序,而接著會使用 getUpdateCount 方法傳回預存程序所影響的資料列計數。

public static void executeUpdateStoredProcedure(Connection con) {
   try {
      CallableStatement cstmt = con.prepareCall("{call dbo.UpdateTestTable(?, ?)}");
      cstmt.setString(1, "A");
      cstmt.setInt(2, 100);
      cstmt.execute();
      int count = cstmt.getUpdateCount();
      cstmt.close();

      System.out.println("ROWS AFFECTED: " + count);
   }
   catch (Exception e) {
      e.printStackTrace();
   }
}

另請參閱

其他資源

搭配預存程序使用陳述式