共用方式為


使用含更新計數的預存程序

下載 JDBC 驅動程式

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

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

注意

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

舉例來說,建立以下表格和儲存程序,並在 AdventureWorks2025 範例資料庫中插入範例資料:

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;  
INSERT INTO dbo.TestTable (Col2, Col3) VALUES ('b', 10);  

在以下範例中,將 AdventureWorks2025 範例資料庫的開啟連線傳遞到函式,執行方法呼叫 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();
        System.out.println("ROWS AFFECTED: " + count);
    }
    // Handle any errors that may have occurred.
    catch (SQLException e) {
        e.printStackTrace();
    }
}

另請參閱

搭配預存程序使用陳述式