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 beispielsweise die folgende Tabelle und gespeicherte Prozedur, und fügen Sie auch Beispieldaten in die AdventureWorks2025-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 AdventureWorks2025-Beispieldatenbank an die Funktion übergeben, die Execute-Methode wird verwendet, um die gespeicherte UpdateTestTable-Prozedur aufzurufen, und dann wird die getUpdateCount-Methode verwendet, um eine Anzahl der Zeilen zurückzugeben, die von der gespeicherten Prozedur betroffen sind.

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