首先我有一个设置并运行的数据库连接,现在问题 - 我有一个连接了actionlistener的搜索按钮,点击它时应该填充一个JTable但是表没有填充,我无法弄清楚为什么!下面显示了我的连接片段以及尝试填充表格的代码。
public void search()
{
btnSearch.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
//String name = txtname.getText();
String dataSourceName = "securitySystem";
String dbUrl = "jdbc:odbc:" + dataSourceName;
try{
//Type of connection driver used
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//Connection variable or object param: dbPath, userName, password
Connection con = DriverManager.getConnection(dbUrl, "", "");
Statement statement = con.createStatement();
ResultSet rs = statement.executeQuery("select * from accesshistory");
String name = "";
DefaultTableModel model;
model = new DefaultTableModel();
tableAccess = new JTable(model);
model.addColumn("Full Name");
while(rs.next())
{
name = rs.getString("Name");
model.addRow(new Object[]{name});
}
statement.close();
con.close();
}catch (Exception e) {
try {
throw e;
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
答案 0 :(得分:1)
您似乎在search()
方法中分配了新的表组件。但是这个新表甚至没有添加到容器中。不要重新分配表组件,而是使用setModel()刷新数据。您还可以更新现有模型。有关示例,请参阅How to Use Tables。
此外,为了获得更好的用户体验和性能,请不要在Event Dispatch Thread
上执行长时间运行的任务,例如数据库交互。使用辅助线程或SwingWorker
用于此目的。有关详细信息和示例,请参阅Concurrency in Swing。
答案 1 :(得分:0)