Abrufen von Datensätzen von MySQL in Java
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?
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);
}