Wiedermal Datenbankeneinbindung in JTables

Henig

Mitglied
Es tut mir echt leid, wenn das thema schon 100mal besprochen wurde... ich hab auhc gesucht aber leider nichts gefunden, was mir weitergeholfen hat...
Folgendes Problem:
Ich hab mir ne schöne GUI zusammengebastelt in der ich ein JTable und ein JButton habe...
desweiteren noch diverse Jcomboboxen, die den filter für die Datenbank vereinfachen sollen...
Meine frage ist jetzt, wie ich um himmels willen, die gefilterten Daten aus meiner Datenbank in dieses Table hinein bekomme (Access 2007)...
Denke das sollte so von der Abfrage her richtig sein:
Code:
		try {
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		} catch (ClassNotFoundException e1) {
			e1.printStackTrace();
		}
		Connection connection;
		
		try {
			connection = DriverManager.getConnection("jdbc:odbc:Autohaus");
			Statement statement = connection.createStatement();
			
			
			ResultSet result = statement.executeQuery("SELECT * FROM AKunde");
			
		} catch (SQLException e) {
			e.printStackTrace();
		}

Jetzt steht in meinem result ja eig alles drin...
Wie gesagt, die Frage ist, wie bekomme ich das nun in das JTable...
Buttoncofiguration:
Code:
...
	Suchen = new JButton();
				Suchen.setText("...Suchen");
				Suchen.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent evt) {
				SuchenActionPerformed(evt);
							}
						});

...

	private void SuchenActionPerformed(ActionEvent evt) {		
	/*Hier muss der ganze schladeredatsch vonwegen überschreiben rein,
*weil die Daten ja erst in das Table sollen, wenn der Button geklickt wird
*/ 
	}

Daraus resultiert ja, das im result "alles drin steht, was ich haben will" wieso ich jetzt nicht einfach result da so reinschreiben kann:
Code:
kundentabelle.setModel(result);
ist eig klar weil es ist ja immerhin kein 2dimesionaler string soweit ich weiß...
Wie kann ich den nun ändern, damit ich den einfach mit .setmodel(result) updaten kann?
Über hilfe wäre ich SEHR dankbar =)
 
Hab nach EINIGER goolezeit eine Lösung für mich gefunden =)

Ich hab eine Methode gebastelt die ein Tablemodel zurück gibt:
Code:
    public static TableModel suchtkunden(){
		
		try {
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		} catch (ClassNotFoundException e1) {
			e1.printStackTrace();
		}
		Connection connection;
		
		try {
			connection = DriverManager.getConnection("jdbc:odbc:Autohaus");
			Statement statement = connection.createStatement();
			
			
			ResultSet result = statement.executeQuery("SELECT * FROM AKunde");
			

				ResultSetMetaData md = result.getMetaData();
				int columns = md.getColumnCount();
				Vector columnNames = new Vector();
				for (int i = 1; i <= columns; i++){
				    columnNames.addElement( md.getColumnName(i) );
				}
				
				Vector data = new Vector();
				while (result.next()){
				    Vector row = new Vector(columns);
				    for (int i = 1; i <= columns; i++){
				       row.addElement( result.getObject(i) );
				    }
				    data.addElement( row );
				}
			connection.close();
			statement.close();
			TableModel meinmodell = new DefaultTableModel(data, columnNames);
			return meinmodell;
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;

im Mainprogramm steht dann:

Code:
		Tabelle.setModel(Autohaus.suchtkunden());

Sobald diese Methode aufgerufen wird klappt alles wunderbar =)

(Quelle: http://www.java-forum.org/awt-swing-swt/90354-resultset-array-jtable-uebergeben.html)
 
Hallo Henig,

vielen Dank für diese tolle Lösung!
Ich habe das Prinzip übernommen.

Tschö,
Igor
 
Zurück