Hallo,
ich benutze folgenden Code, um eine mySQL Tabelle auszulesen und in einer JTable darzustellen:
Das funktioniert soweit auch. Die Frage ist nur, wie behandle ich Spalten, die einen Fremdschlüsseln enthalten. Ziel ist natürlich, dass nicht der Schlüssel dargestellt wird, sondern der Inhalt, auf den es verweist. In meinem Fall ist es eine Tabelle, die eine Spalte "Titel" enthält und eine VARCHAR(255) enthält.
ich benutze folgenden Code, um eine mySQL Tabelle auszulesen und in einer JTable darzustellen:
Java:
private JTable table = new MySQLAccess().readDataBase("select * from table");
Java:
public class MySQLAccess {
private Connection con;
private Statement stmt;
private ResultSet rs;
public JTable readDataBase(String query) {
JTable table = new JTable();
Vector columnNames = new Vector();
Vector data = new Vector();
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost/db?user=root");
stmt = con.createStatement();
rs = stmt.executeQuery(query);
ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();
for (int i = 1; i <= columns; i++) {
columnNames.addElement(md.getColumnName(i));
}
while (rs.next()) {
Vector row = new Vector(columns);
for (int i = 1; i <= columns; i++) {
row.addElement(rs.getObject(i));
}
data.addElement(row);
}
} catch (Exception e) {
System.out.println(e);
} finally {
close();
}
table = new JTable(data, columnNames);
TableColumn col;
for (int i = 0; i < table.getColumnCount(); i++) {
col = table.getColumnModel().getColumn(i);
col.setMaxWidth(250);
}
return table;
}
private void close() {
try {
if (rs != null)
rs.close();
if (stmt != null)
stmt.close();
if (con != null)
con.close();
} catch (Exception e) {
}
}
Das funktioniert soweit auch. Die Frage ist nur, wie behandle ich Spalten, die einen Fremdschlüsseln enthalten. Ziel ist natürlich, dass nicht der Schlüssel dargestellt wird, sondern der Inhalt, auf den es verweist. In meinem Fall ist es eine Tabelle, die eine Spalte "Titel" enthält und eine VARCHAR(255) enthält.