Frage

Ich Baue eine Anwendung in Java zum abrufen von Daten aus der MySQL-Datenbank.Nach dem ausführen einer Abfrage, bekomme ich eine Ergebnismenge und gehen Sie zum extrahieren von Datensätzen:

while (rs.next())
        {
            for (int column = 1; column <= rm.getColumnCount(); column++) {
                row.add(rs.getObject(column));
            }
            result.add(row.toString());
            row.clear();
        }

wo rs = ResultSet und rm = ResultSetMetaData

Das problem ist, dass ich zu tun habe Ergebnis.add(row.toString()); anstatt nur Ergebnis.add(row); (ich möchte erstellen Sie eine zweidimensionale ArrayList).Sonst bekomme ich leere Ergebnisse.

Ich habe versucht, indem Zeile.clear(); am Anfang, bevor die für Schleife, aber das führt dazu, dass alle meine Ergebnisse, gefüllt mit mehreren Instanzen des letzten Datensatzes.Nur wie Zeile wurde nicht Hinzugefügt Ergebnis erst ganz am Ende, wenn es gleich zum letzten Datensatz.Tun ich müssen, um zu "Begehen" der ArrayList Zeile bevor Sie es als ein elemt zu einer anderen ArrayList?Wenn ja, wie?Auch aus Neugier, warum ist .toString() arbeiten anders?

War es hilfreich?

Lösung

Durch hinzufügen der Zeile.toString(), erstellen Sie ein neues String-Objekt hinzufügen in Folge.

Auf der anderen Seite, durch hinzufügen der Zeile, die Sie hinzufügen, die dasselbe Objekt in Folge, also, jedes mal, wenn Zeile.clear() aufgerufen wird, wird es leer ist, werden alle Zeilen im Ergebnis.

Was Sie tun sollten, ist zum erstellen einer neuen Zeile ein Objekt vor die for-Schleife, und nicht Zeile.clear().Folgendes ist ein Beispiel.

while (rs.next())
        {
            row = new ArrayList();

            for (int column = 1; column <= rm.getColumnCount(); column++) {
                row.add(rs.getObject(column));
            }

            result.add(row);
        }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top