Utilizzo di una stored procedure con i conteggi di aggiornamento

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

Una volta impostata la chiamata alla stored procedure utilizzando la classe SQLServerCallableStatement, chiamare la stored procedure utilizzando 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 utilizza 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 ulteriori informazioni sulla proprietà lastUpdateCount, vedere Impostazione delle proprietà delle connessioni.

Come esempio viene creata la seguente tabella e stored procedure nel database di esempio AdventureWorks di SQL Server 2005:

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;

Nell'esempio seguente viene passata alla funzione una connessione aperta al database di esempio AdventureWorks, il metodo execute viene utilizzato per la chiamata alla stored procedure UpdateTestTable, quindi si utilizza 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();
      cstmt.close();

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

Vedere anche

Altre risorse

Utilizzo delle istruzioni con le stored procedure