sql >> Database teknologi >  >> RDS >> Sqlserver

Udfør sp_msforeachdb i en Java-applikation

Hvis en erklæring kan returnere ingen eller flere resultater, bør du ikke bruge executeQuery , men execute() i stedet returnerer denne metode en boolean angiver typen af ​​det første resultat:

  • true :resultatet er et ResultSet
  • false :Resultatet er et antal opdateringer

Hvis resultatet er true , så bruger du getResultSet() for at hente ResultSet , ellers getUpdateCount() for at hente opdateringsantallet. Hvis opdateringsantallet er -1 det betyder, at der ikke er flere resultater. Bemærk, at antallet af opdateringer også vil være -1 når det aktuelle resultat er et ResultSet . Det er også godt at vide, at getResultSet() skal returnere null, hvis der ikke er flere resultater, eller hvis resultatet er et opdateringsantal.

Hvis du nu vil hente flere resultater, ringer du til getMoreResults() (eller dens bror accepterer en int parameter). Returværdien af ​​boolean har samme betydning som execute() , så false betyder ikke, at der ikke er flere resultater!

Der er kun ikke flere resultater, hvis getMoreResults() returnerer false og getUpdateCount() returnerer -1 (som også dokumenteret i Javadoc)

Dette betyder i bund og grund, at hvis du vil behandle alle resultater korrekt, skal du gøre noget som nedenfor:

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

BEMÆRK:En del af dette svar er baseret på mit svar på Java SQL:Statement.hasResultSet()?



  1. Oplysninger om informationsskema-databasen i MySQL

  2. opbygge dynamisk SQL-forespørgsel med psycopg2 python-bibliotek og ved hjælp af gode konverteringsværktøjer

  3. MySql:MyISAM vs. Inno DB!

  4. Import af en CSV til MySQL med andet datoformat