Freigeben über


Verwenden von gespeicherten Prozeduren mit einer Updatezählung

JDBC-Treiber herunterladen

Zum Ändern von Daten in einer SQL Server-Datenbank mit einer gespeicherten Prozedur verfügt der Microsoft JDBC-Treiber für SQL Server über die SQLServerCallableStatement-Klasse. Mithilfe der Klasse „SQLServerCallableStatement“ können Sie gespeicherte Prozeduren aufrufen, die Daten in der Datenbank ändern und die Anzahl der betroffenen Zeilen zurückgeben (die so genannte Updatezählung).

Nachdem der Aufruf der gespeicherten Prozedur mit der Klasse „SQLServerCallableStatement“ eingerichtet wurde, können Sie die gespeicherte Prozedur mit der Methode execute oder der Methode executeUpdate aufrufen. Anders als die Methode „execute“ gibt die Methode „executeUpdate“ einen int-Wert zurück, der die von der gespeicherten Prozedur betroffene Anzahl von Zeilen enthält. Wenn Sie die Methode „execute“ verwenden und die Anzahl der betroffenen Zeilen ermitteln möchten, können Sie nach dem Ausführen der gespeicherten Prozedur die Methode getUpdateCount aufrufen.

Hinweis

Wenn der JDBC-Treiber alle Updatezählungen zurückgeben soll, einschließlich der Updatezählungen, die von eventuell ausgelösten Triggern zurückgegeben werden, müssen Sie die lastUpdateCount-Verbindungseigenschaft auf "false" setzen. Weitere Informationen zur lastUpdateCount-Eigenschaft finden Sie unter Festlegen der Verbindungseigenschaften.

Erstellen Sie als Beispiel die folgende Tabelle und gespeicherte Prozedur, und fügen Sie Beispieldaten in die AdventureWorks2022-Beispieldatenbank ein:

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

Im folgenden Beispiel wird eine offene Verbindung mit der AdventureWorks2022-Beispieldatenbank an die Funktion übergeben, mit der Methode „execute“ wird die gespeicherte Prozedur „UpdateTestTable“ aufgerufen, und anschließend wird mit der getUpdateCount-Methode die Anzahl der von der gespeicherten Prozedur betroffenen Zeilen zurückgegeben.

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

Siehe auch

Verwenden von Anweisungen mit gespeicherten Prozeduren