解决方案 »

  1.   

    代码没有用到一些设计模式,难以理解。建议界面代码与功能代码分离开来,也就是界面类通过一些事件获得结果都是由调用功能类的相关操作并查询数据库类完成的,查询数据库单独作为一个类,提供query和update方法及其它必要方法,如获得连接关闭连接释放资源等。这只是一个大概,没有涉及到一些细节。
    比如调用query()方法执行select语句返回显示到JTable上的Vector<Vector<Object>>    Vector<Vector<Object>> query(String prep, String[] parameter)
                throws SQLException {
            Vector<Vector<Object>> table = new Vector<>();
            Vector<Object> row;
            try (PreparedStatement ps = conn.prepareStatement(prep);
                    ResultSet rs = ps.executeQuery();) {
                for (int i = 0; i < parameter.length; i++)
                    ps.setString(i + 1, parameter[i]);
                ResultSetMetaData data = rs.getMetaData();
                int count = data.getColumnCount();
                row = new Vector<>();
                row.add("Check");
                for (int i = 1; i <= count; ++i)
                    row.add(data.getColumnName(i));
                table.add(row);
                while (rs.next()) {
                    row = new Vector<>();
                    row.add(Boolean.FALSE);
                    for (int i = 1; i <= count; i++)
                        row.add(rs.getObject(i));
                    table.add(row);
                }
                return table;
            }
        }    int update(String prep, String[] parameter) throws SQLException {
            try (PreparedStatement ps = conn.prepareStatement(prep);) {
                for (int i = 0; i < parameter.length; i++)
                    ps.setString(i + 1, parameter[i]);
                return ps.executeUpdate();
            }
        }
    个人观点,供参考。
      

  2.   

    代码确实很乱.... 不知道你表格是怎么封装的,看到一行JScrollpane封装了JTable,但是你的没有封装JScrollpane对象啊