Effizienter Weg, um ResultSet in Java zu behandeln
Ich bin mit einem ResultSet in Java, und bin mir nicht sicher, wie man richtig schließen Sie es. Ich überlege mir, mit dem ResultSet zu konstruieren, die eine HashMap und schließen Sie die Ergebnismenge nach. Ist diese HashMap Technik effizient, oder gibt es effizientere Möglichkeiten für den Umgang mit dieser situation? Ich brauche beide Schlüssel und Werte, so dass die Verwendung einer HashMap schien wie eine logische Wahl.
Wenn die Verwendung einer HashMap ist die effizienteste Methode, wie kann ich bauen und die Nutzung der HashMap in meinem code?
Hier ist, was ich versucht habe:
public HashMap resultSetToHashMap(ResultSet rs) throws SQLException {
ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();
HashMap row = new HashMap();
while (rs.next()) {
for (int i = 1; i <= columns; i++) {
row.put(md.getColumnName(i), rs.getObject(i));
}
}
return row;
}
InformationsquelleAutor der Frage Deepak | 2011-09-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Getan
EDIT: jetzt haben Sie geschrieben code, ich habe ein paar änderungen vorgenommen.
InformationsquelleAutor der Antwort RHT
Ich gerade aufgeräumt RHT Antwort, beseitigen Sie einige Warnungen und dachte, ich würde teilen. Eclipse hat den Großteil der Arbeit:
InformationsquelleAutor der Antwort Brad M
RHT ziemlich viel es. Oder man könnte ein RowSetDynaClass und lassen Sie jemand anderes die ganze Arbeit machen 🙂
InformationsquelleAutor der Antwort Dave Newton
Ein paar Dinge zu verbessern, die anderen Antworten. Zunächst sollten Sie nie wieder ein
HashMap
), die eine Besondere Umsetzung. Rückkehr stattdessen ein einfaches, altesjava.util.Map
. Aber das ist eigentlich nicht das richtige für dieses Beispiel jedenfalls. Dein code gibt nur die Letzte Zeile der Ergebnismenge als eine (Hash)Map. Sie stattdessen wollen, um wieder eineList<Map<String,Object>>
. Überlegen Sie, wie Sie sollten Ihren code so modifizieren, das zu tun. (Oder Sie könnten sich Dave Newton ' s Vorschlag).InformationsquelleAutor der Antwort Rick Goldstein
dies ist meine alternative Lösung, anstatt eine Liste von Anzeigen, bin ich über eine Karte der Liste.
Getestet auf Tabellen von 5000 Elementen, die auf einem remote-db, die Zeiten sind um 350ms für entweder-Methode.
InformationsquelleAutor der Antwort Lesto