Java k跟踪

Java k跟踪,java,sql,combobox,ojdbc,Java,Sql,Combobox,Ojdbc,运行:连接成功java.sql.SQLException:关闭的结果集: 下一个 indensitiveScrollableResultSet.next(indensitiveScrollableResultSet.java:558) 在 frame.print_check.jcombox2ActionPerformed(print_check.java:262) 在frame.print_check.access$100(print_check.java:23)上 frame.print\u

运行:连接成功java.sql.SQLException:关闭的结果集: 下一个 indensitiveScrollableResultSet.next(indensitiveScrollableResultSet.java:558) 在 frame.print_check.jcombox2ActionPerformed(print_check.java:262) 在frame.print_check.access$100(print_check.java:23)上 frame.print\u check$2.actionPerformed(print\u check.java:103)在 fireActionEvent(JComboBox.java:1260)位于 setSelectedItem(JComboBox.java:588)位于 setSelectedIndex(JComboBox.java:624)位于 javax.swing.plaf.basic.basicComboxUI.selectNextPossibleValue(basicComboxUI.java:1124) 在 basicComboxUI$Actions.actionPerformed(basicComboxUI.java:1528) 位于javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1662) 位于javax.swing.JComponent.processKeyBinding(JComponent.java:2879) processKeyBinding(JComboBox.java:1425)位于 javax.swing.JComponent.processKeyBindings(JComponent.java:2940)位于 javax.swing.JComponent.processKeyEvent(JComponent.java:2842)位于 javax.swing.JComboBox.processKeyEvent(JComboBox.java:1417)位于 java.awt.Component.processEvent(Component.java:6293)位于 java.awt.Container.processEvent(Container.java:2229)位于 dispatchEventImpl(Component.java:4872)位于 dispatchEventImpl(Container.java:2287)位于 dispatchEvent(Component.java:4698)位于 redispatchEvent(KeyboardFocusManager.java:1887) 在 DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:762) 在 DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1027) 在 DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:899) 在 DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:727) 位于java.awt.Component.dispatchEventImpl(Component.java:4742) dispatchEventImpl(Container.java:2287)位于 dispatchEventImpl(Window.java:2719)位于 dispatchEvent(Component.java:4698)位于 dispatchEventImpl(EventQueue.java:747)位于 访问$300(EventQueue.java:103) java.awt.EventQueue$3.run(EventQueue.java:706)在 java.awt.EventQueue$3.run(EventQueue.java:704)在 java.security.AccessController.doPrivileged(本机方法)位于 ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 在 ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) 在java.awt.EventQueue$4.run(EventQueue.java:720)处 java.awt.EventQueue$4.run(EventQueue.java:718)在 java.security.AccessController.doPrivileged(本机方法)位于 ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 位于java.awt.EventQueue.dispatchEvent(EventQueue.java:717) java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) 在 java.awt.EventDispatchThread.PumpeEventsforFilter(EventDispatchThread.java:161) 在 java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:150) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 在java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

您的错误在这里:

while (rs3.next()) {
    ...
    st2.close();
    rs3.close();
}
您可以在while循环中而不是在循环外关闭
结果集

NB:您的关闭顺序不正确。您应该先关闭结果集,然后关闭语句,最后关闭连接(如果不再需要)。换言之,闭合序列必须是反向创建序列

您的代码应该是这样的:

try {
    ...
} catch (Exception ex) {
    //Logger.getLogger(print_cheque.class.getName()).log(Level.SEVERE, null, ex);
    ex.printStackTrace();
} finally {
    // Close first the result set
    if (rs4 != null) {
        rs4.close();  
    }
    // The close your statement
    if (st3 != null) {
        st3.close(); 
    } 
}
假设使用java 7或更高,可以考虑使用<代码>尝试使用资源Stutabor < /P> < p>您的bug在这里:

while (rs3.next()) {
    ...
    st2.close();
    rs3.close();
}
您可以在while循环中而不是在循环外关闭
结果集

NB:您的关闭顺序不正确。您应该先关闭结果集,然后关闭语句,最后关闭连接(如果不再需要)。换言之,闭合序列必须是反向创建序列

您的代码应该是这样的:

try {
    ...
} catch (Exception ex) {
    //Logger.getLogger(print_cheque.class.getName()).log(Level.SEVERE, null, ex);
    ex.printStackTrace();
} finally {
    // Close first the result set
    if (rs4 != null) {
        rs4.close();  
    }
    // The close your statement
    if (st3 != null) {
        st3.close(); 
    } 
}

假设使用java 7或更高,可以考虑使用<代码>尝试使用资源语句< /p>我建议运行调试模式,在“代码”中设置断点(RS3.NEXT()){

并查看循环中每个语句返回的内容。这可能是问题所在。这可能不相关,但关闭序列不正确。您应该先关闭结果集,然后关闭语句,最后关闭连接(如果不再需要)。换句话说,关闭序列必须是反向创建序列se将堆栈跟踪添加到您的问题rs3没有检索任何数据并给出空结果。我正在运行的查询在plsql developer和net beans的execute命令中运行良好。@NicolasFilotto请检查编辑。我建议在调试模式下运行,并在
while(rs3.next())处设置断点{
并查看循环中每个语句返回的内容。这可能是问题所在。这可能不相关,但关闭序列不正确。您应该先关闭结果集,然后关闭语句,最后关闭连接(如果不再需要)。换句话说,关闭序列必须是反向创建序列se将堆栈跟踪添加到您的问题3未检索任何数据并给出空结果。我正在运行的查询在plsql developer和net beans的execute命令中运行良好。@Nicolas Filotto请检查编辑。