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.
Quando usa o Microsoft JDBC Driver para SQL Server, pode ter de lidar com instruções complexas, incluindo instruções que são geradas dinamicamente em tempo de execução. Frequentemente, as instruções complexas realizam diferentes tipos de tarefas, incluindo atualizações, inserções e eliminações. Este tipo de instruções pode também devolver múltiplos conjuntos de resultados e parâmetros de saída. Nestas situações, o código Java que executa as instruções pode não saber antecipadamente os tipos e o número de objetos e dados devolvidos.
Para processar instruções complexas, o driver JDBC fornece muitos métodos para consultar os objetos e dados devolvidos, para que a sua aplicação os possa processar corretamente. A chave para processar instruções complexas é o método execute da classe SQLServerStatement . Este método devolve um valor booleano . Quando o valor é verdadeiro, o primeiro resultado devolvido das afirmações é um conjunto de resultados. Se o valor for falso, o primeiro resultado devolvido é uma contagem de atualizações.
Quando sabes o tipo de objeto ou dado que é devolvido, podes usar o método getResultSet ou getUpdateCount para processar esses dados. Para continuar para o próximo objeto ou dado que é devolvido da instrução complexa, pode chamar o método getMoreResults .
No exemplo seguinte, uma ligação aberta à base de dados de exemplo AdventureWorks2025 é passada para a função, é construída uma instrução complexa que combina a execução de um procedimento armazenado com uma instrução SQL, as instruções são executadas e, em seguida, um do ciclo é usado para processar todos os conjuntos de resultados e contagens atualizadas de resultados que são devolvidos.
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();
}
}