hallo, ich möchte mit meinem kleinen applet eine datenbankabfrage machen und alles in ein JTable packen. Funktioniert soweit auch, bloss kann ich das JTable dann nicht richtig aktualisieren. Anstatt das aktualisierte JTable bekomme ich noch eins dahinter geklatscht... Gibts da eine simple Lösung. Vielen Dank im Vorraus und sorry wenn der Code ein wenig zu Quick `n Dirty ist .
Code:
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JTable;
import javax.swing.JScrollPane;
import java.io.*;
import java.util.Vector;
public class AppletJTable extends javax.swing.JApplet implements ActionListener{
//GUI Komponenten
Button ausführen = new Button("Ausführen!");
TextArea ein = new TextArea("Select", 3, 60);
Vector data = new Vector();
Vector title = new Vector();
//DBMS Variablen
Connection c;
Statement s;
public AppletJTable() {
Panel eingabe = new Panel(new BorderLayout());
Panel knopf = new Panel (new FlowLayout(FlowLayout.LEFT));
knopf.add(ausführen);
eingabe.add(knopf, "North");
eingabe.add(ein, "Center");
add(eingabe, "North");
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
c = DriverManager.getConnection("jdbc:odbc:xxx", "xxx", "xxx");
s= c.createStatement();
}
catch (Exception ex){
ein.setText("Fehler:\n" + ex.getMessage());
}
ausführen.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
System.out.println("ActionPerformed");
String sql = ein.getText();
ResultSet r;
try{
if(s.execute(sql)){ //SQL Select Anweisung
//MetaDaten erhalten
r = s.getResultSet();
ResultSetMetaData rm= r.getMetaData();
int x = rm.getColumnCount();
//Kopfzeile schreiben
Vector row0 = new Vector();
for (int i=1; i <= x; i++){
title.add(rm.getColumnName(i));
}
//Daten in Felder füllen
while(r.next()){
Vector row1 = new Vector();
for (int i = 1; i<=x; i++){
row1.add(""+r.getString(i));
}
data.add(row1);
}
//Neue Java Tabelle erzeugen
JTable table = new JTable(data,title);
Panel ausgabeP = new Panel(new BorderLayout());
JScrollPane scroll = new JScrollPane(table);
ausgabeP.add(scroll);
add(ausgabeP);
validate();
}
else
ein.setText(String.valueOf(s.getUpdateCount()));
}
catch(Exception ex){
ein.setText("SQL: "+sql+"\nFehler:\n"+ex.getMessage());
}
}
}