Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wykonaj sp_msforeachdb w aplikacji Java

Jeśli oświadczenie może zwrócić nie lub wiele wyniki, nie powinieneś używać executeQuery , ale execute() zamiast tego ta metoda zwraca boolean wskazując typ pierwszego wyniku:

  • true :wynik to ResultSet
  • false :wynik to liczba aktualizacji

Jeśli wynik jest true , następnie użyj getResultSet() aby pobrać ResultSet , w przeciwnym razie getUpdateCount() aby pobrać licznik aktualizacji. Jeśli licznik aktualizacji wynosi -1 oznacza to, że nie ma więcej wyników. Pamiętaj, że licznik aktualizacji będzie również wynosił -1 gdy bieżący wynik to ResultSet . Warto również wiedzieć, że getResultSet() powinien zwrócić wartość null, jeśli nie ma więcej wyników lub jeśli wynik jest liczbą aktualizacji.

Teraz, jeśli chcesz pobrać więcej wyników, wywołaj getMoreResults() (lub jego brat akceptujący int parametr). Zwracana wartość boolean ma takie samo znaczenie jak execute() , więc false nie oznacza, że ​​nie ma więcej wyników!

Nie ma więcej wyników tylko wtedy, gdy getMoreResults() zwraca false i getUpdateCount() zwraca -1 (jak również udokumentowano w Javadoc)

Zasadniczo oznacza to, że jeśli chcesz poprawnie przetworzyć wszystkie wyniki, musisz zrobić coś takiego jak poniżej:

boolean result = stmt.execute(...);
while(true)
    if (result) {
        ResultSet rs = stmt.getResultSet();
        // Do something with resultset ...
    } else {
        int updateCount = stmt.getUpdateCount();
        if (updateCount == -1) {
            // no more results
            break;
        }
        // Do something with update count ...
    }
    result = stmt.getMoreResults();
}

UWAGA:Część tej odpowiedzi jest oparta na mojej odpowiedzi na Java SQL:Statement.hasResultSet()?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ograniczenie klauzuli IN w SQL Server

  2. Jak włączyć wszystkie ograniczenia wyboru i klucza obcego w bazie danych w programie SQL Server (przykłady T-SQL)

  3. Jak podzielić ciąg i wstawić wartości do tabeli w SQL Server

  4. Wprowadzenie do wbudowanych funkcji z wartościami tabelarycznymi (ITVF) w SQL Server

  5. Dodaj kolumny do istniejącej tabeli w bazie danych SQL Server