Partilhar via


Usando um procedimento armazenado com uma contagem de atualizações

Baixar driver JDBC

Para modificar dados numa base de dados SQL Server usando um procedimento armazenado, o Driver Microsoft JDBC para SQL Server fornece a classe SQLServerCallableStatement . Ao usar a classe SQLServerCallableStatement, pode chamar procedimentos armazenados que modificam dados na base de dados e devolver uma contagem do número de linhas afetadas, também conhecida como contagem de atualizações.

Depois de configurar a chamada para o procedimento armazenado usando a classe SQLServerCallableStatement, pode então chamar o procedimento armazenado usando o método execute ou executeUpdate . O método executeUpdate devolve um valor int que contém o número de linhas afetadas pelo procedimento armazenado, mas o método execute não. Se usar o método execute e quiser obter a contagem do número de linhas afetadas, pode chamar o método getUpdateCount depois de executar o procedimento armazenado.

Observação

Se quiseres que o driver JDBC devolva todas as contagens de atualização, incluindo as contagens de atualizações devolvidas por quaisquer gatilhos que possam ter sido ativados, define a propriedade da string de ligação lastUpdateCount como "false". Para mais informações sobre a propriedade lastUpdateCount, veja Definir as propriedades da ligação.

Como exemplo, crie a seguinte tabela e procedimento armazenado, e também insira dados de exemplo na base de dados de exemplo 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);  

No exemplo seguinte, uma ligação aberta à base de dados de exemplo AdventureWorks2025 é passada para a função, o método execute é usado para chamar o procedimento armazenado UpdateTestTable e, depois, o método getUpdateCount é usado para devolver a contagem das linhas afetadas pelo procedimento armazenado.

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

Consulte também

Utilização de instruções com procedimentos armazenados