Frage

Ich hatte ein Problem in den Suchresultates den Aufbau mit Java. Hier geht es ...

Ich bin Speichern einer Sammelobjekt, das als Folge von einem resultset Objekt genommen weise organisiert und setzt das Sammelobjekt (die als Vektor / Array-Liste gespeichert ist) in den Cache und versuchen, die gleiche Sammlung Objekt abzurufen. Verwendung des Sammlungsobjekt Hier muss ich das Resultset wieder aufzubauen zurück. Nun meine Zweifel baut die resultset auf diese Weise möglich ist oder nicht? Bitte lassen Sie mich wissen, so bald wie möglich.

Vielen Dank im Voraus,

Bhaskar

War es hilfreich?

Lösung

Die beste Idee, wenn Sie eine Sammlung anstelle eines Cache verwenden, ist eine CachedRowSet anstelle eines ResultSet. CachedRowSet ist ein Subinterface von ResultSet, aber die Daten bereits im Cache gespeichert. Das ist viel einfacher, als alle Daten in ein Arraylist zu schreiben.
CachedRowSets können auch selbst abgefragt werden.

CachedRowSet rs;
.......................
.......................
Integer id;
String name;

while (rs.next())
{               
     if (rs.getInt("id") == 13)
     {
          id   = rs.getInt("id");
          name = rs.getString("name")); 
     }              
}

So Sie nur die CachedRowSet rufen, wenn Sie die Informationen benötigen. Es ist fast so gut wie geschnitten Brot. :)

EDIT:
Es gibt keine festen Methoden für ResultSet, während es Update-Methoden. Das Problem bei der Verwendung der Methode Update der zum Zwecke eines ResultSet wieder aufzubauen ist, dass es eine Zeile zu aktualisieren, erfordert die Auswahl. Sobald die ResultSet selbst befreit hat, werden alle Zeilen auf null gesetzt. Ein NULL-Verweis kann nicht aufgerufen werden. Eine Liste von Listen ahmt ein ResultSet selbst, oder genauer gesagt, ein Array von Arrays eine ResultSet imitieren.

Während Vektoren Thread-sicher sind, gibt es einen großen Aufwand mit ihnen verbunden. Verwenden Sie die Arraylist statt. Da jede verschachtelte Liste erstellt wird und in die äußere Nest Liste platziert, legen Sie sie auf diese Weise.

nest.add(Collections.unmodifiableList(nested));

Nachdem alle verschachtelten Listen eingefügt werden, kehren die Nest-Liste als auch umodifiableList. Dies gibt Ihnen eine Thread-sichere Sammlung ohne den Overhead der Vektoren.

Andere Tipps

Hier finden Sie aktuelle auf dieser Seite . Versuchen Sie, um zu sehen, ob die SimpleResultSet Klasse für Ihre Bedürfnisse in Ordnung ist.

Wenn Sie kombinieren seine Quelle in eine eigenständige Gruppe von Klassen, sollte es den Trick

Von dem, was ich bekommen konnte, der Code wie folgt sein:

List collection = new ArrayList();
collection.add(" A collection in some order");

List cache = new ArrayList();
cache.add(collection); ...

Wenn Sie jetzt abrufen Ich glaube, Sie Ihre Sammlung um erhalten werden, da Sie Liste verwendet haben.

Wenn dies nicht das, was Sie erwartet haben, tut Kommentar.

Ich werde Ihnen raten CachedRowSet zu verwenden. Siehe http://www.onjava.com/pub /a/onjava/2004/06/23/cachedrowset.html dieser Artikel mehr über CachedRowSet wissen. Sobald Sie diese CachedRowSet erstellen, können Sie aus der Datenbank trennen, einige Änderungen vornehmen, um die im Cache gespeicherten Daten und Schreiben können sogar die DB-Verbindung öffnen und die Änderungen in der Datenbank begehen.

Eine weitere Option, die Sie berücksichtigen sollten, ist nur der Code Refactoring eine Sammlung statt eines ResultSet zu übernehmen.

Ich gehe davon aus, dass Sie passieren ResultSet ein Verfahren, das durchläuft es. Genauso gut könnte man die Methode ändern, um eine Arraylist iterieren ...

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