Hi @ all.
Ich hole mir aus einer MySQL DB Daten in eine JTable, klappt ja soweit.
Die Tabelle ist editierbar. Wenn ich nun die gewünschten Datensätze in meiner Table bearbeitet hab, möchte ich diese Änderungen gleich an meine Datenbank weitergeben (z.B. per Button "Datensätze updaten" oder so).
Hier mein
Hat jemand ne Idee wie ich das Problem lösen könnte, hab irgendwie keine so richtige Idee
Danke.
Ich hole mir aus einer MySQL DB Daten in eine JTable, klappt ja soweit.
Die Tabelle ist editierbar. Wenn ich nun die gewünschten Datensätze in meiner Table bearbeitet hab, möchte ich diese Änderungen gleich an meine Datenbank weitergeben (z.B. per Button "Datensätze updaten" oder so).
Hier mein
Code:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableModel;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
public class AnsichtPanel extends JPanel {
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public final static Vector COLUMN_IDENTIFIERS = new Vector() {
{
add("Nummer");
add("Mitarbeitername");
}
};
JTable table;
JButton btnAnz;
DefaultTableModel defaultTableModel;
Connection con;
public AnsichtPanel() {
defaultTableModel = new DefaultTableModel(0, 10);
defaultTableModel.setColumnIdentifiers(COLUMN_IDENTIFIERS);
//table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table = new JTable(defaultTableModel);
btnAnz = new JButton("Files anzeigen");
btnAnz.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Vector results = findAllPersons();
defaultTableModel.setDataVector(results, COLUMN_IDENTIFIERS);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
defaultTableModel.fireTableDataChanged();
}
});
add(new JScrollPane(table), BorderLayout.CENTER);
add(btnAnz, BorderLayout.SOUTH);
initDatabase();
setVisible(true);
}
private void initDatabase() {
MysqlDataSource mds = new MysqlDataSource();
mds.setServerName("localhost");
mds.setPort(3306);
mds.setDatabaseName("esfiles");
mds.setUser("root");
mds.setPassword("");
try {
con = mds.getConnection();
} catch (SQLException e) {
throw new RuntimeException(e);
}
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
try {
if (!con.isClosed()) {
con.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
});
}
protected Vector findAllPersons() {
Vector results = new Vector();
try {
Statement statement = con.createStatement();
ResultSet rs = statement.executeQuery("SELECT * FROM test");
while (rs.next()) {
Vector person = new Vector();
person.add(rs.getString("nr"));
person.add(rs.getString("mitarbeiter"));
results.add(person);
}
} catch (SQLException e) {
e.printStackTrace();
}
return results;
}
/**
* @param args
*/
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception ex) {
System.out.println("**ERROR** Konnte den Stil der Oberfläche nicht festlegen...");
}
new AnsichtPanel();
}
}
Hat jemand ne Idee wie ich das Problem lösen könnte, hab irgendwie keine so richtige Idee

Danke.