Frage

Ich möchte eine Gruppe von Datensätzen aus einer Datenbank abzurufen, führen Sie eine rs.next () und dann das Ergebnis dieser zuweisen zu einer Variablen auf ein Verfahren zu übergeben, die diesen Datensatz verwenden, auf die gleiche Art und Weise, dass ich ohne dass es zu einer variablen zugewiesen wird und sie ein Verfahren Passieren Gibt es eine Möglichkeit, dies zu tun? Ich bin mit JAVA (1.5)


Danke für alle Antworten

Ich will nicht die ganze resultSet auf eine Methode zu übergeben, nur die aktuelle Zeile, aber wie ich sie verstehe, ist es nicht möglich, dies zu tun

War es hilfreich?

Lösung

Sie möchten das Ergebnis von rs.next () zu einer Variablen zugewiesen werden?

Ich fürchte, Sie können das nicht. Sie können einen Verweis aus, dass rs und verarbeiten sie in anderen Verfahren (auf die gleiche Weise, ohne es zu einem var zuweisen würde)

Wenn Sie die rs als Argument an eine Methode übergeben, das ist genau das, was bereits Sie tun.

while( rs.next() ) { 
    list.add( createFrom( rs ) );
}

...

public Object createFrom( ResultSet rs ) {  // Here rs is a copy of the reference in the while above. 
}

Habe ich Recht Frage?

Andere Tipps

Nein, das nicht aus der Box unterstützt, aber vielleicht die folgenden Idee können Ihnen helfen:

ResultSetMetaData meta = rs.getMetaData();
while (rs.next()) {
  Map<String,Object> row = new HashMap<String,Object>();
  for (int i = 1; i <= meta.getColumnCount(); ++i) {
    row.put(meta.getColumnName(i), rs.getObject(i));
  }
  processRow(row);
}

Das Problem ist, müssen Sie die Werte aus der row-Karte in processRow() werfen und es wird für alle Art / Treiberkombinationen (BLOBs, ...) nicht funktionieren.

Ich glaube, ich Sie jetzt verstanden. :)

Nein, es ist nicht möglich, es so zu tun. Die ResultSet ändert seinen internen Zustand bei jedem Aufruf so ResultSet.next() den Verweis auf das Speichern werden Sie nicht überall bekommen. Sie haben die Daten, die Sie in ein benutzerdefinierten Objekt extrahieren mögen und speichern.

CustomData cd = new CustomData();
cd.setString1(rs.getString(1));
cd.setInt1(rs.getInt(2));
...

Sie können dann speichern Sie die cd Variable und wieder mit Ihren ResultSet verarbeiten.

Ich finde oft Liste> Datenstruktur sehr nützlich, während sie mit Ergebnismengen arbeiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top