Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.sql.SQLException:关闭的结果集:下一步_Java_Oracle_Jdbc - Fatal编程技术网

java.sql.SQLException:关闭的结果集:下一步

java.sql.SQLException:关闭的结果集:下一步,java,oracle,jdbc,Java,Oracle,Jdbc,我没有找到SQLExeption的原因,我在(dbrs.next())时在中找到了它。这很简单,但在更新到Oracle Server 19之后,我发现了这个错误。我在OracleDeveloper中仍然得到了一个结果集,使用相同的帐户 Statement st = conn.createStatement(); if (Oracle){ ResultSet dbrs = st.executeQuery("select table_name from all_tables"); while

我没有找到SQLExeption的原因,我在(dbrs.next())时在
中找到了它。这很简单,但在更新到Oracle Server 19之后,我发现了这个错误。我在OracleDeveloper中仍然得到了一个结果集,使用相同的帐户

Statement st = conn.createStatement();
if (Oracle){
  ResultSet dbrs = st.executeQuery("select table_name from all_tables");
  while(dbrs.next()){
     if (dbrs.getString(1).equals(G_IN)){
        st.execute("DROP TABLE "+G_IN);
        System.out.println(G_IN+" gelöscht");
     }
  }
  dbrs.close();
}else{
   String loeschen="DROP TABLE IF EXISTS \"" + G_IN +"\"";
   System.out.println(loeschen);
   st.execute( loeschen );
}

您不应该像while循环那样重用语句对象。要执行新查询,需要使用新的语句对象

替换

st.execute("DROP TABLE "+G_IN);


它应该可以工作。

OP不仅要确保使用单独的语句,还必须确保禁用自动提交模式。使用此解决方案,您将如何关闭新语句?不,这不是原因。我收到了相同的错误。@Chris94这是一个符合垃圾收集条件的动态对象。它正在使用ResultSet dbrs=conn.createStatement().executeQuery(“从所有_表中选择表_名称”);加上conn.createStatement().execute(“DROP TABLE”+G_IN);
conn.createStatement().execute("DROP TABLE "+G_IN);