java - 错误 ORA-01000 : maximum open cursors exceeded

标签 java eclipse oracle

在 Eclipse 中,我收到此错误:**错误 ORA-01000:超出最大打开游标数 我终于在 block 中关闭了连接,但我不知道为什么会收到此错误,这是我的代码 JAVA。 请帮助我!

 for (DossierAMO dos = null; it.hasNext();) {
            PreparedStatement ps = null;
            ResultSet rs = null;
            PreparedStatement ps2 = null;
            ResultSet rs2 = null;
            try {
                dos = (DossierAMO) it.next();   
                //PreparedStatement ps = null;
                //ResultSet rs = null;
                /*try
                 * 
                {*/
                System.out.println("Imma"+dos.getImma());
                    ps = cnnOracle.getConnexion().prepareStatement(
                            "select count(IMM_IMM_V_NUM_IMM) from d_salaire@prod_dist where SAL_C_DS =21 and IMM_IMM_V_NUM_IMM =?",
                            ResultSet.TYPE_FORWARD_ONLY,
                            ResultSet.CONCUR_READ_ONLY
                            );
                    ps.setString(1,dos.getImma());
                    rs = ps.executeQuery();
                    if (rs.next()){

                        if (rs.getInt(1) != 0)
                            //System.out.println("> Ecriture des dossiers d'indus dans le fichier d'indus2");
                            fichierIndius2.ecrireDossier(dos);
                        else
                        {


                            ps2 = cnnOracle.getConnexion().prepareStatement(
                            "select count(DOS_N_NUM_DOS) from d_dossier@prod_dist where IMM_IMM_V_NUM_IMM =?",
                            ResultSet.TYPE_FORWARD_ONLY,
                            ResultSet.CONCUR_READ_ONLY
                            );
                            ps2.setString(1,dos.getImma()); 
                            rs2 = ps2.executeQuery();
                            if (rs2.next()){

                            if (rs2.getInt(1) != 0)

                            fichierIndius2.ecrireDossier(dos);

                            else{
                fichierIndius.ecrireDossier(dos);
        }}}}
            } catch (Exception ex) {
                requete.fermer();

                fichierIndius.fermerSansException();
                fichierIndius2.fermerSansException();
                cnnAS400.fermerConnexion();
                cnnAS400FO.fermerConnexion();
                cnnOracle.fermerConnexion();
                System.err
                        .println("Erreur d'écriture dans le fichier d'indus! /        EXC : "
                                + ex);
                return;
            }
            finally{

                if (rs != null)
                    try {
                        rs.close();
                    } catch (Exception exx) {
                    }
                if (rs2 != null)
                    try {
                        rs2.close();
                    } catch (Exception exx) {
                    }
                if (ps != null)
                    try {
                        ps.close();
                    } catch (Exception exx) {
                    }
                if (ps2 != null)
                    try {
                        ps2.close();
                    } catch (Exception exx) {
                    }
            }






        }

最佳答案

" i don't know why i'm getting this error"

会不会是这个错字?

            if (ps2 != null)
                try {
                    ps.close();
                } catch (Exception exx) {
                }

您正在关闭 ps 而不是 ps2

关于java - 错误 ORA-01000 : maximum open cursors exceeded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42441092/

相关文章:

java - Java 中是否存在类似于 <getClass()> 泛型参数的东西?

java - JTable - 如何获取已删除的行

oracle - SQL Developer 不显示 XML

java - 如何在 Mac 上使用 Java 中的 ssl 证书

java - 在 Java 中以编程方式将 HTML/MXML 文件转换为 Word 文档

eclipse - 无法更新 Eclipse Luna

c++ - 即使构建成功,Eclipse c++ Type could not be resolved 错误

JavaFX 应用程序未从命令行运行/如何正确构建和导出?

javascript - 编写不同月份的查询

oracle - 在 B 树索引的前沿按范围查询,PostgreSQL