首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

执行deleteRow()之后结果集被关闭?解决方案

2012-06-11 
执行deleteRow()之后结果集被关闭?Java codepublic void actionPerformed(ActionEvent ae) {ResultSet rs

执行deleteRow()之后结果集被关闭?

Java code
public void actionPerformed(ActionEvent ae) {                ResultSet rs = StudentInformation.getResultSet();                int selectedRow = InformationTable.getSelectedRowIndex();                if (selectedRow == -1) {                    JOptionPane.showMessageDialog(                            OperationPanel.this.getParent(), "错误操作:对无效列的删除!",                            "删除失败", JOptionPane.OK_OPTION);                    return;                }                try {                    rs.absolute(selectedRow + 1);                    rs.deleteRow();                    JOptionPane.showMessageDialog(OperationPanel.this.getParent(),                            "删除成功!", "删除成功", JOptionPane.WARNING_MESSAGE);                } catch (SQLException e) {                    e.printStackTrace();                    JOptionPane.showMessageDialog(OperationPanel.this.getParent(),                            "有个未知错误!请联系写这个程序的天才!", "删除失败", JOptionPane.OK_OPTION);                }            }


这是为我的按钮添加的监听器。当我第一次选中JTable中的那一行时,点这个按钮,删除成功,然后我再做任何需要使用结果集的操作,都会报错:

com.microsoft.sqlserver.jdbc.SQLServerException: 该连接已关闭。
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.checkClosed(SQLServerConnection.java:388)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.checkClosed(SQLServerStatement.java:978)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.checkClosed(SQLServerResultSet.java:375)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.last(SQLServerResultSet.java:1456)
at huangjin.frame.ResultTableModel.getRowCount(ResultTableModel.java:44)
at javax.swing.JTable.getRowCount(Unknown Source)
at javax.swing.JTable.getCellRect(Unknown Source)
at javax.swing.JTable.valueChanged(Unknown Source)
at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
at javax.swing.DefaultListSelectionModel.changeSelection(Unknown Source)
at javax.swing.DefaultListSelectionModel.changeSelection(Unknown Source)
at javax.swing.DefaultListSelectionModel.setSelectionInterval(Unknown Source)
at javax.swing.JTable.changeSelectionModel(Unknown Source)
at javax.swing.JTable.changeSelection(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI$Handler.adjustSelection(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI$Handler.mousePressed(Unknown Source)
at java.awt.AWTEventMulticaster.mousePressed(Unknown Source)
at java.awt.AWTEventMulticaster.mousePressed(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)


at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

请问怎么回事?

[解决办法]
应该是connection已经关闭了
[解决办法]

探讨

应该是connection已经关闭了

[解决办法]
这部分代码似乎没什么问题,建议单步查看继续后面的执行是不是哪里在用完连接后就随手给关了
比如显示完成后之类的
[解决办法]
删除的时候也要把已经删的一行剔除出去
建议贴一下完整的数据库部分的代码
这样才好看出问题

热点排行
Bad Request.