各位达人帮忙看看下列代码,有这么一个奇怪事,当sql是简单的查询,如"select * from STUDENT"时,程序不报错,
但如果sql="select count(*)from STUDENT"时,则出现异常:无效的游标状态;
GUI上按钮触发事件调用selectSQL(String sql, JTable table)),我就想使用这个函数,支持各种SQL查询,请各位帮我完善,谢谢!!
 public ResultSet selectSQL(String sql, JTable table) {
            try {
                statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
                
                resultSet = statement.executeQuery(sql);                displayResultSet(table, resultSet);                System.out.println("Select Successful! ");
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return resultSet;
        }        public void displayResultSet(JTable table, ResultSet rs)
                throws SQLException {
            rs.beforeFirst();// 指针移到第一条记录前面
            boolean hasRecords = rs.next();
            if (!hasRecords) { // 记录集为空,提示一条消息
                JOptionPane.showMessageDialog(table, "无相关记录", "Check your input!",
                        JOptionPane.ERROR_MESSAGE);
                return;
            }
            Vector<String> columnHeads = new Vector<String>();// 用于存储表头字段(列名)
            Vector<Vector> rows = new Vector<Vector>();// 用于存储记录行
            try {
                // 获取字段的名称
                ResultSetMetaData rsmd = rs.getMetaData();
                for (int i = 1; i <= rsmd.getColumnCount(); ++i) {
                    columnHeads.addElement(rsmd.getColumnName(i));
                    System.out.println("ColumnName:" + rsmd.getColumnName(i));
                }                do {// 获取记录集
                    rows.addElement(getNextRow(rs, rsmd));                } while (rs.next());                // 建立相应的TableModel,并将TableModel应用到Table中显示出来                DefaultTableModel model = new DefaultTableModel(rows, columnHeads);
                table.setModel(model);
                return;
            } catch (SQLException exc) {
                JOptionPane.showMessageDialog(table, exc.toString(),
                        "Check your input!", JOptionPane.ERROR_MESSAGE);
                return;
            }
        }        private Vector getNextRow(ResultSet rs, ResultSetMetaData rsmd)
                throws SQLException {
            Vector<String> currentRow = new Vector<String>();            for (int i = 1; i <= rsmd.getColumnCount(); ++i) {
                currentRow.addElement(rs.getString(i));
                //System.out.println("Row:" + rs.getString(i));
            }
            return currentRow; // 返回一条记录
        }