[JAVA]daten aus resultSet weiter verwenden
repi 09.05.2009 - 22:33 3381 24
repi
Addicted
|
ich hab da ein problem wo ich ansteh. datenbankverbindung wird aufgebaut, dann bekomm ich die daten aus den 3 spalten der db. diese möcht ich aber nicht auf der console ausgeben,so wie es zurzeit unten im code der fall ist, sondern in eine 3 spaltige tabelle schreiben. Connection con;
try
{
con = DriverManager.getConnection("jdbc:mysql://xx.xxx.x.xx:xxxx/bla", "bla", "bla");
Statement stmt = con.createStatement();
String query = "SELECT * FROM bla";
ResultSet rs = stmt.executeQuery(query);
while(rs.next())
System.out.printf( "Spalte 1: %s | Spalte 2: %s | Spalte 3: %s%n", rs.getString(2), rs.getString(3), rs.getString(4) );
if(!rs.next())
System.out.println("Ende der Liste");
rs.getString(2), rs.getString(3), rs.getString(4) möchte bzw. muss ich in ein mehrdimensionales Array bekommen, da ja einer der Konstruktoren von jTable ein public jTable(Object[][]rowData, Object[]columnNames)
ist. Wenn jemand eine andere bzw. bessere Idee hat, dann bin ich dafür auch sehr dankbar.
|
tinker
SQUEAK
|
also ich greif immer mit rs.getXXX auf die Daten zu.
|
3mind
mimimi
|
trotz mehrmaligen lesen ist mir jetzt eigentlich nicht ganz klar, was deine eigentliche fragestellung ist? ob jtable das richtige ist? wie du das umsetzen kannst mit jtable, oder was sonst?
|
tinker
SQUEAK
|
Also so wie ichs verstanden hab will er wissen obs ne bessere Methode als rs.getXXX gibt um die Daten zu bekommen. Am besten wahrscheinlich als rs.getData welches Object[][] liefert.
Aber wie gesagt, machs immer mit getXXX. In deinem Fall halt getString, die Strings in ein Array, dieses wiederum in ein Array und das dann an die jTable übergeben.
|
repi
Addicted
|
diese möcht ich aber nicht auf der console ausgeben,so wie es zurzeit unten im code der fall ist, sondern in eine 3 spaltige tabelle schreiben. ist das so org mißverständlich geschrieben. die daten die ich aus rs.getString(2), rs.getString(3), rs.getString(4) möchte ich nicht auf der console ausgeben lassen, sondern in ein Mehrdimensionales Array stecken. wie krieg ich das hin? falls ich mich dumm ausgedrückt hab, entschuldigt bitte.
|
tinker
SQUEAK
|
JDBC aber keine Grundlagen? Aber bitte: Object[] row;
Object[][] data = new Object[rs.size()][3];
int i = 0;
while (rs.next) {
row = new Object[3];
row[0] = rs.getString(2);
row[1] = rs.getString(3);
row[2] = rs.getString(4);
data[i] = row;
i++;
}
Mal auf die schnelle. Obs jetzt wirklich rs.size() heißt weiß ich nicht.
|
repi
Addicted
|
doch schon grundlagen, ich probier eh schon ganze zeit herum. ich habe das gefühl heute schon betriebsblind zu sein. so gehts mir des öfteren, wenn ich zulang sitz, komm ich auf einfachere sachen nimma drauf. danke schon mal im voraus, ich werds gleich ausprobieren.
|
tinker
SQUEAK
|
Eigentlich braucht man die Variable row garnicht, fällt mir grad auf: Object[][] data = new Object[rs.size()][3];
int i = 0;
while (rs.next) {
data[i][0] = rs.getString(2);
data[i][1] = rs.getString(3);
data[i][2] = rs.getString(4);
i++;
}
|
repi
Addicted
|
rs.size() gibts nicht. konnte es aber anders lösen. trotzdem danke für deinen denkanstoss.
|
tinker
SQUEAK
|
Jop, wie gesagt, kA wie die Funktion genau heißt, aber irgendwie kommt ma halt auf die Größe des ResulSets. Und was meinst mit anders lösen? Nur das mit rs.size() oder ansonsten auch noch was geändert?
|
3mind
mimimi
|
hm, also die frage war im prinzip wie du ein array befüllen kannst? sry, aber das war aus deinem ersten post beim besten willen nicht klar.
viel erfolg weiterhin
|
jaime
Little Overclocker
|
|
repi
Addicted
|
Jop, wie gesagt, kA wie die Funktion genau heißt, aber irgendwie kommt ma halt auf die Größe des ResulSets. Und was meinst mit anders lösen? Nur das mit rs.size() oder ansonsten auch noch was geändert? sry, bin dir antwort schuldig geblieben. ich hab kein array verwendet, sondern mit Vector und ResultSetMetaData gearbeitet.
ResultSetMetaData rsmd = rs.getMetaData();
int spalten = rsmd.getColumnCount();
// Spaltennamen holen
for (int i = 1; i <= spalten; i++)
{
spaltenNamen.addElement(rsmd.getColumnName(i));
}
// Row data holen
while (rs.next())
{
Vector row = new Vector(spalten);
for (int i = 1; i <= spalten; i++)
{
row.addElement(rs.getObject(i));
}
daten.addElement(row);
}
rs.close();
stmt.close();
die vectoren "daten" und "spaltenNamen" hab ich dann an die jtable übergeben
|
tinker
SQUEAK
|
Ah, ok. Danke fürs zeigen!
|
repi
Addicted
|
sry dass so lang auf sich warten hat lassen. bin in letzter zeit schlampig mit forum lesen.
|