Anzahl der Zeilen in einem Java-Resultset abrufen

Weiß jemand einen besseren Weg, um die Anzahl der Zeilen in einer Java-resultset zurückgegeben, die aus einer MySQL-Datenbank? Das resultset zurückgegeben wird nicht die Gesamtzahl der Zeilen aus der Datenbank gelesen, so dass ich glaube nicht, dass ich kann verwenden Sie die SQL - COUNT Aggregatfunktion.

public static int getResultSetRowCount(ResultSet resultSet) {
    int size = 0;
    try {
        resultSet.last();
        size = resultSet.getRow();
        resultSet.beforeFirst();
    }
    catch(Exception ex) {
        return 0;
    }
    return size;
}
Kommentar zu dem Problem
Aufruf von resultSet.last() bewirken, dass die Ergebnismenge tatsächlich iterieren über alle Datensätze - es ist also deutlich ineffizienter. Auch wird Sie zwingen, alle Daten im Cache-Speicher, auch wenn Sie es nicht brauchen noch. Irgendeinen Grund, warum Sie sagte: "er resultset zurückgegeben wird nicht die Gesamtzahl der Zeilen aus der Datenbank gelesen werden" ? Kommentarautor: RonK
@RonK: Warum glaubst du, wird es sein, Durchlaufen alle über? Ich konnte nichts finden, wie dies in docs. Kommentarautor: Adeel Ansari
@Ronk: Die Daten Lesen aus der Datenbank-Tabelle wird eine Teilmenge der in der Tabelle Daten nur, anstatt alle Daten in der Tabelle. Ich bin neugierig auf die 'Iteration über alle' wenn. Kommentarautor: Mr Morgan
@Adeel Ansari: ich bin mir nicht 100% sicher, ich dekompiliert Oracle Ergebnismengen und fand heraus, dass in der Strömung der Berufung auf die 'letzten ()' - Methode der 'cacheAllRows ()' - Methode aufgerufen, und die Methode beginnt mit dem 'while(resultSet.next())'. Ich gehe davon aus, dass der MySQL-Treiber nicht haben etwas besseres zu tun. Kommentarautor: RonK
@Mr. Morgan: Als einige der Antworten, die unten angegeben ist - wenn Sie einen SQL, der bekommt die Daten, die Sie haben können, das gleiche zu return COUNT() - ich sehe keinen Grund warum es nicht funktionieren kann. Kommentarautor: RonK

InformationsquelleAutor der Frage Mr Morgan | 2010-06-16

Schreibe einen Kommentar