"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

[JAVA]daten aus resultSet weiter verwenden

repi 09.05.2009 - 22:33 3381 24
Posts

repi

Addicted
Avatar
Registered: Jan 2004
Location: Sollenau
Posts: 508
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.

Code:
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
Code:
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
Avatar
Registered: Nov 2005
Location: NÖ
Posts: 5221
also ich greif immer mit rs.getXXX auf die Daten zu.

3mind

mimimi
Avatar
Registered: Sep 2004
Location: 1030
Posts: 1588
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
Avatar
Registered: Nov 2005
Location: NÖ
Posts: 5221
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
Avatar
Registered: Jan 2004
Location: Sollenau
Posts: 508
Zitat
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
Avatar
Registered: Nov 2005
Location: NÖ
Posts: 5221
JDBC aber keine Grundlagen? Aber bitte:

Code:
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
Avatar
Registered: Jan 2004
Location: Sollenau
Posts: 508
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
Avatar
Registered: Nov 2005
Location: NÖ
Posts: 5221
Eigentlich braucht man die Variable row garnicht, fällt mir grad auf:
Code:
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
Avatar
Registered: Jan 2004
Location: Sollenau
Posts: 508
rs.size() gibts nicht. konnte es aber anders lösen. trotzdem danke für deinen denkanstoss.

tinker

SQUEAK
Avatar
Registered: Nov 2005
Location: NÖ
Posts: 5221
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
Avatar
Registered: Sep 2004
Location: 1030
Posts: 1588
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
Registered: Sep 2008
Location: Vienna
Posts: 51

repi

Addicted
Avatar
Registered: Jan 2004
Location: Sollenau
Posts: 508
Zitat von tinker
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.
Code:
  
            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
Avatar
Registered: Nov 2005
Location: NÖ
Posts: 5221
Ah, ok. Danke fürs zeigen! :)

repi

Addicted
Avatar
Registered: Jan 2004
Location: Sollenau
Posts: 508
sry dass so lang auf sich warten hat lassen. bin in letzter zeit schlampig mit forum lesen.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz