Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Wenn ich jetzt über JDBC eine Datenbankabfrage durchführe, wann werden genau die Daten vom Server übertragen?
executeQuery,
resultSet.net,
oder
rset.getString...
kann man das so einfach sagen, oder ist das Datenbank abhängig?
wenn Du das wirklich so genau wissen moechtest, dann koennte ich fuer den MSSQL Server z.B. einen Log mitlaufen lassen und Dir sagen, an welcher Stelle genau die Daten geholt werden.
Ist ca. 10 Min. aufwand.
Vom Gefuehl her wuerde ich aber sagen, dass das beim executeQuery durchgefuehrt wird.
REsultSet.next kann ich mir irgendwie nicht vorstellen, ich denke da sind die Daten schon im ResultSet.
Ich gehe davon aus, dass die Handhabung aehnlich ist, wie beim CachedRowSet.
Da laedts Du die Daten ja auch nicht jedes Mal nach, wenn Du ein .next() aufrufst.
Aber wie gesagt, wenn Du moechtest, logge ich das fuer DIch mit
Eine eindeutige Antwort zu diesem Thema ist nicht einfach, da es letztendlich von der Implementierung (und den Fähigkeiten der Datenquelle) sowie den Defaultwerten des JDBC-Treibers abhängt.
Wichtige Einstellungen sind: ResultSet Type:
ResultSet.TYPE_FORWARD_ONLY, ResultSet.TYPE_SCROLL_INSENSITIVE, or ResultSet.TYPE_SCROLL_SENSITIVE
FetchDirection:
ResultSet.FETCH_FORWARD, ResultSet.FETCH_REVERSE, or ResultSet.FETCH_UNKNOWN
ResultSetConcurrency
ResultSet.CONCUR_READ_ONLY or ResultSet.CONCUR_UPDATABLE
und die schon erwähnte FetchSize
Wobei (zumindest in der Vergangenheit) das nicht alle Treiber unterstützen.
Ein üblicher Weg um ein gestreamtes ResultSet zu erhalten ist:
Um den Komfort von resultSet.last() anzubieten, sind die Defaultwerte meist anders. Bei Memoryproblemen in Verbindung mit ResultsSets wird zu dieser Einstellung geraten.
Bei manchen Treibern kann man das Buffern über die Einstellungen steuern, z.B. beim M$-JDBC-Treiber mit setResponseBuffering("adaptive").
Also sichere Aussagen kann man nur für den jeweiligen JDBC-Treiber treffen. Wenn die Doku nicht genug hergibt muss man wohl tracen.
BTW: Welche Datenbank bzw. welchen Treiber verwendest du?
Was JDBC angeht, habe ich noch keine Traceerfahrung (benötigt). Aus M$-Zeiten kann ich noch den ODBC-Weg beschreiben, der wahrscheinlich auch in vielen JDBC-Treiber Anwendung findet.
Per Default wird das ganze ResultSet einglesen, allerdings nur die relativeRecordNumber je Satz. Wenn man den Satz dann in der Applikation verarbeitet, werden die Daten mit der Satznummer abgeholt.