Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Изпълнете sp_mforeachdb в Java приложение

Ако изявление може да върне no или multiple резултати, не трябва да използвате executeQuery , но execute() вместо това този метод връща boolean показващ типа на първия резултат:

  • true :резултатът е ResultSet
  • false :резултатът е брой актуализации

Ако резултатът е true , след това използвате getResultSet() за да извлечете ResultSet , в противен случай getUpdateCount() за да извлечете броя на актуализациите. Ако броят на актуализациите е -1 това означава, че няма повече резултати. Имайте предвид, че броят на актуализациите също ще бъде -1 когато текущият резултат е ResultSet . Също така е добре да знаете, че getResultSet() трябва да върне null, ако няма повече резултати или ако резултатът е преброяване на актуализациите.

Сега, ако искате да извлечете повече резултати, извиквате getMoreResults() (или неговият брат, приемащ int параметър). Връщаната стойност на boolean има същото значение като това на execute() , така че false не означава, че няма повече резултати!

Няма повече резултати само ако getMoreResults() връща false и getUpdateCount() връща -1 (както също е документирано в Javadoc)

По същество това означава, че ако искате да обработите правилно всички резултати, трябва да направите нещо като по-долу:

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();
}

ЗАБЕЛЕЖКА:Част от този отговор се основава на моя отговор на 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. Плюсове и минуси на използването на SqlCommand Prepare в C#?

  2. Разлика между извършено четене и повторяемо четене

  3. Как мога да получа имена на колони от таблица в SQL Server?

  4. Какъв тип данни трябва да се използва за съхраняване на телефонни номера в SQL Server 2005?

  5. SQL Server произволно сортиране