SQL - Ergebnis in JTextfields ausgeben

quidnovi

Erfahrenes Mitglied
Hallo Gemeinde :)

Leider haben meine Suchergebnisse nicht das gewünschte Ergebnis gebracht, weswegen ich Euch jetzt um Hilfe ersuche.

Ich möchte eine Tabelle in einer H2 DB auslesen und die Ergebnisse in JTextFields ausgeben.
Mit folgendem Befehl versuche ich's:
Java:
String sql = "SELECT * FROM KOMMISSIONEN";
			
			ResultSet rs = stmt.executeQuery(sql);

			while (rs.next()) {
				
				        // Zur Kontrolle auf der Konsole
					System.out.println("ID: " + rs.getInt("ID") + " Datum: " + rs.getString("Datum"));
					txtFldList.setText("ID: " + rs.getInt("ID") + " Datum: " + rs.getString("Datum"));
}

Ergebnis mit sysout:
ID: 1 Datum: 07.09.2012 08:40:41
ID: 2 Datum: 07.09.2012 08:42:15


Allerdings möchte ich diese Ergebisse in einer GUI ausgeben.
Wie oben erwähnt, nutze ich ein JTextField mit einem "edit" und "delete" - Button.

Leider erhalte ich nur den 2. Eintrag.

Wie stelle ich das an, dass nun jedes Ergebnis in einem eigenen JTextField aufgelistet wird?

Danke im Voraus für Euer Bemühen :)
 
Hi

a) Du ersetzt den geade angezeigten Text ja immer durch die nächste Zeile.
Frag den aktuellen Inhalt des Textfeldes ab und häng mit + den neuen Teil dran.

Java:
txtFldList.setText(txtFldList.getText() + "ID: " + rs.getInt("ID") + " Datum: " + rs.getString("Datum"));

b) Für mehrzeiligen Text solltest du nicht JTextField, sondern JTextArea verwenden.

Gruß
 
Hi sheel...danke für die Mühe.

Leider habe ich mich nicht deutlich genug ausgedrückt....sorry.

In die DB - Tabelle "Kommissionen" werden alle erzeugten Kommissionen gespeichert.
Die Auflistung der einzelnen Kommissionen sollen deswegen in Textfeldern abgespeichert werden,
damit der User eine Kommission mittels ID aufrufen und editieren oder löschen kann.
Dazu scheinen mir Textfelder die brauchbarste Lösung zu sein...oder täusche ich mich da?

Aja...diese Textfelder sollen dynamisch erzeugt werden...also soviel Textfelder wie Einträge in der Tabelle.

Ich habe Deinen Vorschlag jetzt eingebaut, leider bekomme ich doch immer nur ein Textfeld.

Hier der Code dazu:
Java:
try {
	Statement stmt = DBData.connection.createStatement();
	String sql = "SELECT ID, KOMMNR, KOMMNAME, DATUM FROM KOMMISSIONEN";

	while (rs.next()) {
			txtFldList = new JTextField();
			txtFldList.setText(txtFldList.getText() + "ID: " + rs.getInt("ID") + " Datum: " + rs.getString("Datum"));
 txtFldList.setEditable(false);
			GridBagConstraints gbc_txtFldList = new GridBagConstraints();
			gbc_txtFldList.insets = new Insets(0, 0, 5, 5);
			gbc_txtFldList.fill = GridBagConstraints.HORIZONTAL;
			gbc_txtFldList.gridx = 1;
			gbc_txtFldList.gridy = 5;
			add(txtFldList, gbc_txtFldList);
			txtFldList.setColumns(10);
			
			JButton btnEdit = new JButton("editieren");
			GridBagConstraints gbc_btnEdit = new GridBagConstraints();
			gbc_btnEdit.insets = new Insets(0, 0, 5, 5);
			gbc_btnEdit.gridx = 2;
			gbc_btnEdit.gridy = 5;
			add(btnEdit, gbc_btnEdit);
			
			JButton btnDelete = new JButton("l\u00F6schen");
			GridBagConstraints gbc_btnDelete = new GridBagConstraints();
			gbc_btnDelete.insets = new Insets(0, 0, 5, 5);
			gbc_btnDelete.gridx = 3;
			gbc_btnDelete.gridy = 5;
			add(btnDelete, gbc_btnDelete);
		}

	// Resultset schließen
	rs.close();

	// Statement schließen
	stmt.close();

} catch (SQLException e) {
	e.printStackTrace();
}
}

Ich habe es bereits mit einer for-Schleife probiert, leider mit dem selben Ergebnis:
Java:
Statement stmt = DBData.connection.createStatement();
	String sql = "SELECT ID, KOMMNR, KOMMNAME, DATUM FROM KOMMISSIONEN";
	
	ResultSet rs = stmt.executeQuery(sql);
	
	int columnCnt = rs.getMetaData().getColumnCount();
	String s;

	while (rs.next()) {
		
		for( int i=1; i< columnCnt; i++){
			s = rs.getString(i);
			int column = i;
			
			txtFldList = new JTextField();
			txtFldList.setText(rs.getMetaData().getColumnName(column) + ":" + s );
			//...GBC, Buttons
		}
	}

Wenn ich das Ergebnis dieser for-Schleife auf der Konsole ausgebe, dann erscheint das gewünschte Ergebnis.
ID:1
KOMMNR:789
KOMMNAME:789
ID:2
KOMMNR:uoi
KOMMNAME:uio

Die Abfrage stimmt, nur wollen diese nicht in jeweils ein eigenes Textfeld....leider reicht dazu mein Wissen noch nicht...
Deswegen bitte ich nochmals um Unterstützung, danke
 
Zuletzt bearbeitet:
Hi Gemeinde :)

habe jetzt einen anderen Weg gewählt, da der Textfieldansatz schon allein wegen der GBC für mich ein wenig kompliziert ist.
Ich schreibe nun die DB - Ergebnisse in einen JTable, welchen ich allerdings noch nicht gecodet habe.

Da das Ganze nun doch - wie oben angemerkt - versucht wird zu lösen, bedanke ich mich für's lesen im Allgemeinen und bei sheel im Besonderen.
Und weil meine Java - Kenntnisse noch ziemlich bescheiden sind, werden wir uns sicher wieder lesen ;)

Servus derweil :)
 
Zurück