将数据库表中的所有数据集插入到jTable Java中

时间:2018-06-27 10:09:54

标签: java database swing user-interface jtable

我正在尝试从数据库中将所有数据集选择到jTable中(单击按钮后)。

我尝试过这样的事情:

public Object getValueAt(int rowIndex, int columnIndex) throws SQLException { java.sql.Connection con; con = DriverManager.getConnection ("jdbc:mysql://localhost:3306/lessonstbl","root",""); String query =" SELECT * FROM lessons"; PreparedStatement statement = con.prepareStatement(query); ResultSet rs = statement.executeQuery(query);

     try {
            rs.absolute(rowIndex + 1);
            switch (columnIndex) {
                case 0: 
                    return rs.getString(1);
                case 1:
                    return rs.getString(2);
                case 2:
                    return rs.getInt(3);
                case 3:
                    return rs.getObject(4).toString();
                case 4:
                    return rs.getObject(5).toString();
                default:
                    return null;
            }
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());

.. 但这不起作用。 提前谢谢

1 个答案:

答案 0 :(得分:0)

public Object getValueAt(int rowIndex, int columnIndex) throws SQLException {

在我看来,您似乎正在尝试重写TableModel的getValueAt(...)方法。由于以下几个原因,该方法不起作用:

  1. 您正在通过添加throws SQLExeption来更改方法签名,因此您不会覆盖TableModel的默认实现,而是创建一个未调用的新方法。

  2. 在getVaueAt()方法中执行SQL查询是一个坏主意。此方法应非常有效,因为每次需要绘制表中的单元格时都会调用此方法。

因此,正确的解决方案是在创建表时执行SQL查询,并在类开始时将来自SQL查询的所有数据加载到TableModel中。这意味着您将需要遍历ResultSet的所有行和列,以将数据添加到TableModel

检出在Table From Database中找到的Table From DataBase Example。或者,您可以在论坛中搜索关键字为“ ResultSet and JTable”的其他示例。