Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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();
}
}