Uso di una stored procedure con i conteggi di aggiornamento

Scaricare il driver JDBC

Per modificare i dati in un database di SQL Server usando una stored procedure, Microsoft JDBC Driver per SQL Server fornisce la classe SQLServerCallableStatement. Mediante la classe SQLServerCallableStatement è possibile chiamare le stored procedure che consentono di modificare i dati nel database e restituire un conteggio del numero di righe interessate, noto anche come conteggio aggiornamenti.

Dopo aver impostato la chiamata alla stored procedure usando la classe SQLServerCallableStatement, chiamare la stored procedure usando il metodo execute o il metodo executeUpdate. Il metodo executeUpdate restituisce un valore int contenente il numero di righe interessate dalla stored procedure, diversamente dal metodo execute. Se si usa il metodo execute e si desidera ottenere il conteggio del numero di righe interessate, chiamare il metodo getUpdateCount dopo avere eseguito la stored procedure.

Nota

Se si desidera che il driver JDBC restituisca tutti i conteggi degli aggiornamenti, inclusi i conteggi degli aggiornamenti restituiti dai trigger eventualmente attivati, impostare la proprietà della stringa di connessione lastUpdateCount su "false". Per altre informazioni sulla proprietà lastUpdateCount, vedere Impostazione delle proprietà di connessione.

Come esempio, creare la tabella e la stored procedure seguenti e inserire i dati nel database di esempio AdventureWorks2022:

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);  

Nell'esempio seguente viene passata alla funzione una connessione aperta al database di esempio AdventureWorks2022, viene usato il metodo execute per chiamare la stored procedure UpdateTestTable e quindi viene usato il metodo getUpdateCount per restituire un conteggio delle righe interessate dalla stored procedure.

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();
    }
}

Vedi anche

Uso delle istruzioni con le stored procedure