Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Chcete-li upravit data v databázi SQL Serveru pomocí uložené procedury, ovladač Microsoft JDBC pro SQL Server poskytuje třída SQLServerCallableStatement. Pomocí SQLServerCallableStatement třídy můžete volat uložené procedury, které upravují data, která jsou v databázi, a vrátit počet ovlivněných řádků, označovaných také jako počet aktualizací.
Po nastavení volání uložené procedury pomocí SQLServerCallableStatement třídy můžete volat uloženou proceduru pomocí execute nebo executeUpdate metoda. Metoda executeUpdate vrátí hodnotu int , která obsahuje počet řádků ovlivněných uloženou procedurou, ale execute metoda ne. Pokud používáte metodu execute a chcete získat počet ovlivněných řádků, můžete po spuštění uložené procedury volat metodu getUpdateCount .
Poznámka:
Pokud chcete, aby ovladač JDBC vrátil všechny počty aktualizací, včetně aktualizačních počtů vrácených jakoukoli aktivační událostí, která mohla být spuštěna, nastavte vlastnost připojovacího řetězce lastUpdateCount na "false". Další informace o vlastnosti lastUpdateCount naleznete v tématu Nastavení vlastností připojení.
Například vytvořte následující tabulku a uloženou proceduru a vložte také ukázková data do ukázkové databáze 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);
V následujícím příkladu je do funkce předáno otevřené připojení k ukázkové databázi AdventureWorks2025, metoda execute je použita k volání uložené procedury UpdateTestTable a poté je metoda getUpdateCount použita k vrácení počtu řádků, které jsou ovlivněny touto uloženou procedurou.
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();
}
}