我在InternalFrame的关闭事件中关闭数据的连接,一切都正常,但是关闭以后却抛出这样的异常,因为我是用ResultSet做的Table的Model,所以必须在InteranlFrame的关闭事件中才能将Connection关闭,经调试,数据库可以正常关闭,但关闭以后回到调用事件时就抛出了异常。
程序部分代码: public void this_internalFrameClosing(InternalFrameEvent e) {
try{
if (conn != null){
conn.close();
}
}catch(SQLException ex){
ex.printStackTrace();
}
} // 这段代码没有抛出任何异常,能正常关闭Connection;class MyinternalFrameAdapter extends InternalFrameAdapter {
private InternalFrame adaptee;
MyinternalFrameAdapter(InternalFrame adaptee) {
this.adaptee = adaptee;
}
public void internalFrameClosing(InternalFrameEvent e) {
adaptee.this_internalFrameClosing(e);
}
} //程序回到这里就抛出了下面的异常;异常如下:
com.microsoft.sqlserver.jdbc.SQLServerException: 该连接已关闭。
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.checkClosed(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.checkClosed(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.checkClosed(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.last(Unknown Source)
at mymis.PlanetTableModel.getRowCount(InternalFrame.java:167)
at javax.swing.JTable.getRowCount(JTable.java:1797)
at javax.swing.plaf.basic.BasicTableUI$Handler.repaintLeadCell(BasicTableUI.java:746)
at javax.swing.plaf.basic.BasicTableUI$Handler.focusLost(BasicTableUI.java:764)
at java.awt.Component.processFocusEvent(Component.java:5380)
at java.awt.Component.processEvent(Component.java:5244)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1810)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:840)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:530)
at java.awt.Component.dispatchEventImpl(Component.java:3841)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Window.dispatchEventImpl(Window.java:1774)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.SequencedEvent.dispatch(SequencedEvent.java:93)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
程序部分代码: public void this_internalFrameClosing(InternalFrameEvent e) {
try{
if (conn != null){
conn.close();
}
}catch(SQLException ex){
ex.printStackTrace();
}
} // 这段代码没有抛出任何异常,能正常关闭Connection;class MyinternalFrameAdapter extends InternalFrameAdapter {
private InternalFrame adaptee;
MyinternalFrameAdapter(InternalFrame adaptee) {
this.adaptee = adaptee;
}
public void internalFrameClosing(InternalFrameEvent e) {
adaptee.this_internalFrameClosing(e);
}
} //程序回到这里就抛出了下面的异常;异常如下:
com.microsoft.sqlserver.jdbc.SQLServerException: 该连接已关闭。
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.checkClosed(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.checkClosed(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.checkClosed(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.last(Unknown Source)
at mymis.PlanetTableModel.getRowCount(InternalFrame.java:167)
at javax.swing.JTable.getRowCount(JTable.java:1797)
at javax.swing.plaf.basic.BasicTableUI$Handler.repaintLeadCell(BasicTableUI.java:746)
at javax.swing.plaf.basic.BasicTableUI$Handler.focusLost(BasicTableUI.java:764)
at java.awt.Component.processFocusEvent(Component.java:5380)
at java.awt.Component.processEvent(Component.java:5244)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1810)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:840)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:530)
at java.awt.Component.dispatchEventImpl(Component.java:3841)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Window.dispatchEventImpl(Window.java:1774)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.SequencedEvent.dispatch(SequencedEvent.java:93)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
conn.close();
}再调用之前 已经关闭了connection
只有当InternalFrame关闭的时候才会执行this_internalFrameClosing(InternalFrameEvent e) 函数
不是已经提示了吗