Java SELECT Ausgabe in JTable

Kasino

Neuling
Thread Starter
Mitglied seit
05.04.2011
Beiträge
120
Ort
Lohmar
Hallo Liebe Community,
ich stehe mal wieder vor einem Problem. Ich habe eine Datenbank aus der ich Datenauslese per Select-Abfrage. Die Select Abfrage funktioniert auch. Ich habe nur das problem das ich die Ergebnisse nicht in eine JTable bekomme.

Ich habe eine Klasse in der die JTable erstellt wird.

Code:
String[][] rowData = {};
		
		
		String[] columnNames = { "Name:", "Vorname:", "E-Mail:", "Tel.:",
				"Fax.:", "Bemerkung:", "ID:" };

		DefaultTableModel ddm = new DefaultTableModel(rowData, columnNames);
		JTable table = new JTable();
		table.setBackground(Color.lightGray);
		table.setEnabled(false);
		table.setModel(ddm);

		JScrollPane pane = new JScrollPane(table);
		pane.setBounds(0, 100, 940, 174);
		pane.setBackground(Color.lightGray);
		this.add(pane);

Und eine Klasse in der die Abfrage geschieht und die Daten in die JTable geschrieben werden soll

Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class SuchenbuttonListener implements ActionListener {

	Verbindung verbindung;
	Hauptfenster hauptfenster;

	public SuchenbuttonListener(Verbindung verbindung, Hauptfenster hauptfenster) {
		this.verbindung = verbindung;
		this.hauptfenster = hauptfenster;

	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub


		String query3 = "SELECT * FROM adressen";
		
		

		try {
			System.out.println(query3);
			Statement stmt = verbindung.connection.createStatement();
			ResultSet rs = stmt.executeQuery(query3);
			
	          
		int i;
			while(rs.next()) {
				
				String[i][] rowData = {{rs.getString("name"), rs.getString("vorname")}};
				//rs.first();
				//System.out.println(rs.getString("name") + rs.getString("vorname"));
				//System.out.println(rs.getString("vorname"));
			i++;
	        }

		
			
		} catch (SQLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}

	}

}

Ich bekomme es einfach nicht hin und bin kurz vorm aufgeben ... könnt ihr mir da weiterhelfen?
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Dieser Teil hier dürfte nicht funktionieren:

Code:
int i;
while(rs.next()) {
  String[i][] rowData = {{rs.getString("name"), rs.getString("vorname")}};
  i++;
}

Du iterierst zwar über die Ergebnismenge Deiner Abfrage, erzeugst aber jedes mal ein neues Array anstatt die Werte zu einem bereits bestehenden Array hinzuzufügen.

Zudem solltest Du hier besser einen Vector anstelle eines Arrays nutzen, es sei denn Du weist genau wie viele Datensätze Deine Abfrage liefert.
 
a) Oho, wieso wird i nicht mit 0 definiert? Sonst kann es passieren, dass i irgendein Zahl annimmt.

b) @Elgar: Du hast Recht, das ist auch ein Fehler. Aber JTable nimmt am besten nur Array an, oder geht es auch mit Vector?
 
Zuletzt bearbeitet:
Die Abfrage ar nur ein Test ob die daten überhauot übergeben werden. Ich habe viel gesucht ich finde aber noch nichteinmal einen Ansatz wie ich die Daten in die JTable bekommen soll.
 
b) @Elgar: Du hast Recht, das ist auch ein Fehler. Aber JTable nimmt am besten nur Array an, oder geht es auch mit Vector?

JTable hat auch einen Konstruktor, der Vectoren als Parameter erwartet.

---------- Post added at 14:50 ---------- Previous post was at 14:47 ----------

Die Abfrage ar nur ein Test ob die daten überhauot übergeben werden. Ich habe viel gesucht ich finde aber noch nichteinmal einen Ansatz wie ich die Daten in die JTable bekommen soll.

Aus Deinem bisher geposteten Code geht leider nicht hervor, wo Du die JTable erzeugst und wie bzw. wo Deine Klasse SuchenbuttonListener eingebunden wird. Von daher ist es schwierig zu sagen, wo und wie die daten übergeben werden müssen.
 
Hier einmal die Vollständigen Klassen...
Das Rot makierte ist Auskommentiert ;)

Die Klasse Hautfenster in der, der SuchenbuttonListener sowie die JTable erstellt wird.

Code:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;

public class Hauptfenster extends JFrame {

	JTextArea name = new JTextArea();
	JTextArea vorname = new JTextArea();
	JTextArea email = new JTextArea();
	JTextArea telefon = new JTextArea();
	JTextArea faxnummer = new JTextArea();
	JTextArea bemerkung = new JTextArea();
	JTextArea id = new JTextArea();
	JButton suchen = new JButton();
	JButton neuerEintrag = new JButton();
	JButton eintragLoeschen = new JButton();
	JTable table = new JTable();
	String[][] rowData = {};
	
	
	public Verbindung verbindung;

	Hauptfenster(Verbindung verbindung) {
		
		this.verbindung = verbindung;
		this.setSize(940, 300);
		this.setTitle("EDV-Adressbuch");
		this.setLayout(null);
		this.setLocationRelativeTo(null);
		this.setResizable(false);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.getContentPane().setBackground(Color.lightGray);

		// Erste Zeile (Name,Vorname,E-Mail)

		JLabel zuName = new JLabel("Name:");
		zuName.setBounds(10, 5, 110, 17);
		this.add(zuName);

		name.setBounds(10, 25, 110, 17);
		this.add(name);

		JLabel zuVorname = new JLabel("Vorname:");
		zuVorname.setBounds(135, 5, 110, 17);
		this.add(zuVorname);

		vorname.setBounds(135, 25, 110, 17);
		this.add(vorname);

		JLabel zuEmail = new JLabel("E-Mail:");
		zuEmail.setBounds(260, 5, 110, 17);
		this.add(zuEmail);

		email.setBounds(260, 25, 180, 17);
		this.add(email);

		JLabel zuTel = new JLabel("Tel.:");
		zuTel.setBounds(455, 5, 130, 17);
		this.add(zuTel);

		telefon.setBounds(455, 25, 130, 17);
		this.add(telefon);

		JLabel zuFax = new JLabel("Fax.:");
		zuFax.setBounds(600, 5, 130, 17);
		this.add(zuFax);

		faxnummer.setBounds(600, 25, 130, 17);
		this.add(faxnummer);

		JLabel zuBemerkung = new JLabel("Bemerkung:");
		zuBemerkung.setBounds(745, 5, 130, 17);
		this.add(zuBemerkung);

		bemerkung.setBounds(745, 25, 130, 17);
		this.add(bemerkung);

		JLabel zuID = new JLabel("ID:");
		zuID.setBounds(890, 5, 30, 17);
		this.add(zuID);

		id.setBounds(890, 25, 30, 17);
		id.setEditable(false);
		this.add(id);

		suchen.setBounds(275, 55, 100, 30);
		suchen.setToolTipText("Taste: Enter");
		suchen.setFocusPainted(false);
		suchen.setText("Suchen");
		suchen.addActionListener(new SuchenbuttonListener(verbindung, this));
		this.add(suchen);

		neuerEintrag.setBounds(385, 55, 130, 30);
		neuerEintrag.setText("Neuer Eintrag");
		neuerEintrag.setFocusPainted(false);
		neuerEintrag.setToolTipText("Tastenkombination: Strg + N");
		neuerEintrag.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent arg0) {

				NeuerEintragFenster neuerEintrag = new NeuerEintragFenster(
						new Verbindung());

			}
		});
		this.add(neuerEintrag);

		eintragLoeschen.setBounds(525, 55, 130, 30);
		eintragLoeschen.setText("Eintrag Löschen");
		eintragLoeschen.setFocusPainted(false);
		eintragLoeschen.setToolTipText("Tastenkombination: Strg + D");
		eintragLoeschen.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent arg0) {

				EintragLoeschen eintragMitIDLoeschen = new EintragLoeschen(
						new Verbindung());

			}
		});
		this.add(eintragLoeschen);
			
		
		String[] columnNames = { "Name:", "Vorname:", "E-Mail:", "Tel.:",
				"Fax.:", "Bemerkung:", "ID:" };

		DefaultTableModel ddm = new DefaultTableModel(rowData, columnNames);
		
		table.setBackground(Color.lightGray);
		table.setEnabled(false);
		table.setModel(ddm);

		JScrollPane pane = new JScrollPane(table);
		pane.setBounds(0, 100, 940, 174);
		pane.setBackground(Color.lightGray);
		this.add(pane);

		this.setVisible(true);
	}

}

Hier die Vollständige SuchenbuttonListener Klasse

Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;


public class SuchenbuttonListener implements ActionListener {

	Verbindung verbindung;
	Hauptfenster hauptfenster;

	public SuchenbuttonListener(Verbindung verbindung, Hauptfenster hauptfenster) {
		this.verbindung = verbindung;
		this.hauptfenster = hauptfenster;

	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub

		[COLOR="#FF0000"]/* String name = "";
		
		  String vorname = ""; String email = ""; String tel = ""; String fax =
		 ""; String bemerkung = "";
		 

		 name = hauptfenster.name.getText();
		
		  vorname = hauptfenster.vorname.getText(); email =
		  hauptfenster.email.getText(); tel = hauptfenster.telefon.getText();
		  fax = hauptfenster.faxnummer.getText(); bemerkung =
		 hauptfenster.bemerkung.getText();
		 

		
		 String query3 =
		 "SELECT * FROM adressen WHERE name, vorname, email, tel, fax, bemerkung = "
		 + name + "," + vorname + "," + email + "," + tel + "," + fax + "," +
		 bemerkung;*/
		 [/COLOR]
		String query3 = "SELECT * FROM adressen";

		try {
			System.out.println(query3);
			Statement stmt = verbindung.connection.createStatement();
			ResultSet rs = stmt.executeQuery(query3);
			ResultSetMetaData rsmd = rs.getMetaData();
			
			
         [COLOR="#FF0000"]   //while (rs.next()) {

				// String[][] rowData = {{rs.getString("name"),
				// rs.getString("vorname")}};

				//System.out.println(rs.getString("name") + " "
				//		+ rs.getString("vorname"));

		//	}[/COLOR]

		} catch (SQLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}

	}

}
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh