如何解决此错误? java.sql.SQLException:已关闭结果集:next

时间:2019-06-27 06:04:56

标签: java sql oracle

我编写了一个Java应用程序来生成报告。

在生成报告时,它停止并且堆栈跟踪显示了此错误:

java.sql.SQLException: Closed Resultset: next
    at oracle.jdbc.driver.InsensitiveScrollableResultSet.next(InsensitiveScrollableResultSet.java:565)
    at diferentedb.Clasa.connectare(Clasa.java:2693)
    at diferentedb.Diferentedb.main(Diferentedb.java:11)

堆栈跟踪显示错误在此行上:

while(rs69.next()) {

如何解决此错误?

我将代码粘贴到了问题中

我已验证ResultSet在使用前未关闭,但尚未关闭

Statement st69 = con.createStatement();

         String id_d112 = "";
         String an_d112 = "";
         String link_d112 = "";
         String d112_2019 = "";
          String d112_2018 = "";
           String d112_2017 = "";
            String d112_2016 = "";
             String d112_2015 = "";
              String d112_2014 = "";
               String d112_2013 = "";
                String d112_2012 = "";
                 String d112_2011 = "";
                  String d112_2010 = "";
                   String d112_2009 = "";
         ResultSet rs69b = null;
         String str_d112 = "";
         String str_d112_tot = "";
         String sql69 = "select id from dec_declaratii where tip_declaratie='D112' and id>"+id5+" and cod_stare_prelucrare_intern in ('DUK_VLD','GEN_MSJ') minus select id from dec_unk.a_d112_2019";       
         ResultSet rs69 = st69.executeQuery(sql69);
         Statement st69b = null;
         while(rs69.next()) {    <<<<--------------- Line with error
             id_d112 = rs69.getString(1);
             counter++;

             st69b = con.createStatement();
             String sql69b = "select anul_duk from dec_declaratii where id="+id_d112;
             rs69b = st69b.executeQuery(sql69b);
             while(rs69b.next()) {
                 an_d112 = rs69b.getString(1);
                 link_d112 = id_d112+an_d112;
                 if(link_d112.substring(link_d112.length()-4, link_d112.length()).equals("2019")) {
            d112_2019+=link_d112.substring(0, link_d112.length()-4)+", ";
        } 
         if(link_d112.substring(link_d112.length()-4, link_d112.length()).equals("2018")) {
            d112_2018+=link_d112.substring(0, link_d112.length()-4)+", ";
        } 
          if(link_d112.substring(link_d112.length()-4, link_d112.length()).equals("2017")) {
            d112_2017+=link_d112.substring(0, link_d112.length()-4)+", ";
        } 
           if(link_d112.substring(link_d112.length()-4, link_d112.length()).equals("2016")) {
            d112_2016+=link_d112.substring(0, link_d112.length()-4)+", ";
        } 
            if(link_d112.substring(link_d112.length()-4, link_d112.length()).equals("2015")) {
            d112_2015+=link_d112.substring(0, link_d112.length()-4)+", ";
        } 
             if(link_d112.substring(link_d112.length()-4, link_d112.length()).equals("2014")) {
            d112_2014+=link_d112.substring(0, link_d112.length()-4)+", ";
        } 
              if(link_d112.substring(link_d112.length()-4, link_d112.length()).equals("2013")) {
            d112_2013+=link_d112.substring(0, link_d112.length()-4)+", ";
        } 
               if(link_d112.substring(link_d112.length()-4, link_d112.length()).equals("2012")) {
            d112_2012+=link_d112.substring(0, link_d112.length()-4)+", ";
        } 
                if(link_d112.substring(link_d112.length()-4, link_d112.length()).equals("2011")) {
            d112_2011+=link_d112.substring(0, link_d112.length()-4)+", ";
        } 
                   if(link_d112.substring(link_d112.length()-4, link_d112.length()).equals("2011")) {
            d112_2010+=link_d112.substring(0, link_d112.length()-4)+", ";
        } 
                      if(link_d112.substring(link_d112.length()-4, link_d112.length()).equals("2011")) {
            d112_2009+=link_d112.substring(0, link_d112.length()-4)+", ";
        } 

             }
             rs69.close();
             st69.close();

         }

         rs69b.close();

         st69b.close();

我希望该应用生成报告并修复错误。

预先感谢

1 个答案:

答案 0 :(得分:0)

您在rs69b结束时关闭rs69