JTable没有填充从数据库中提取的数据

时间:2013-12-09 20:23:06

标签: java swing jtable database-connection

首先我有一个设置并运行的数据库连接,现在问题 - 我有一个连接了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();
                }
            }                       
        }
    });

2 个答案:

答案 0 :(得分:1)

您似乎在search()方法中分配了新的表组件。但是这个新表甚至没有添加到容器中。不要重新分配表组件,而是使用setModel()刷新数据。您还可以更新现有模型。有关示例,请参阅How to Use Tables

此外,为了获得更好的用户体验和性能,请不要在Event Dispatch Thread上执行长时间运行的任务,例如数据库交互。使用辅助线程或SwingWorker用于此目的。有关详细信息和示例,请参阅Concurrency in Swing

答案 1 :(得分:0)

  • 首先请注意设计目的和坚固性从不创造 如果添加为事件处理程序中的数据库连接会更好 单身然后称为静态
  • 其次看看这个Post我猜你所面临的问题是关于JTableModel对象声明和分配的问题
祝你好运