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.
Pokud používáte ovladač Microsoft JDBC pro SQL Server, možná budete muset zpracovat složité příkazy, včetně příkazů, které jsou dynamicky generovány za běhu. Složité příkazy často provádějí různé druhy úloh, včetně aktualizací, vkládání a odstraňování. Tyto typy příkazů mohou také vracet více sad výsledků a výstupní parametry. V těchto situacích nemusí kód Jazyka Java, který spouští příkazy, předem znát typy a počet vrácených objektů a dat.
Pro zpracování složitých příkazů ovladač JDBC poskytuje mnoho metod pro dotazování objektů a vrácených dat, aby je vaše aplikace správně zpracovávala. Klíčem ke zpracování složitých příkazů je metoda executetřídy SQLServerStatement . Tato metoda vrátí logickou hodnotu. Pokud je hodnota true, první výsledek vrácený z příkazů je sada výsledků. Pokud je hodnota false, první vrácený výsledek je počet aktualizací.
Pokud znáte typ vráceného objektu nebo dat, můžete k zpracování těchto dat použít metodu getResultSet nebo getUpdateCount . Chcete-li pokračovat na další objekt nebo data vrácená z komplexního příkazu, můžete zavolat metodu getMoreResults.
V následujícím příkladu se do funkce předá otevřené připojení k ukázkové databázi AdventureWorks2025, vytvoří se komplexní příkaz, který kombinuje volání uložené procedury s příkazem SQL, příkazy se spustí a pak do se smyčka použije ke zpracování všech sad výsledků a aktualizovaných počtů vrácených.
public static void executeComplexStatement(Connection con) {
try (Statement stmt = con.createStatement();) {
String sqlStringWithUnknownResults = "{call dbo.uspGetEmployeeManagers(50)}; SELECT TOP 10 * FROM Person.Contact";
boolean results = stmt.execute(sqlStringWithUnknownResults);
int count = 0;
do {
if (results) {
ResultSet rs = stmt.getResultSet();
System.out.println("Result set data displayed here.");
}
else {
count = stmt.getUpdateCount();
if (count >= 0) {
System.out.println("DDL or update data displayed here.");
}
else {
System.out.println("No more results to process.");
}
}
results = stmt.getMoreResults();
}
while (results || count != -1);
}
// Handle any errors that may have occurred.
catch (SQLException e) {
e.printStackTrace();
}
}