首页 > 解决方案 > 结果集关闭后,我收到操作不允许

问题描述

我正在提取大约 10,000 个患者 ID,同时在执行加密后我想将它们插入到另一个表中,但我收到了这个错误

java.sql.SQLException: ResultSet 关闭后不允许操作。

Connection conn=null;
PreparedStatement pst=null;
try{
    conn = DriverManager.getConnection(constring,username,password);
    System.out.println("connected");

    Statement stmt=(Statement) conn.createStatement();

    ResultSet srs = stmt.executeQuery(
    "select patient_id from patient");

    while (srs.next()) {
        patient_id = srs.getInt("patient_id");

        System.out.println(patient_id);
        JavaApplication5 o=new JavaApplication5(key);

        g=patient_id;
        o.c=main.g;
        s=o.encrypt(o.c,key);
        System.out.println(s);
        String insert = "Insert into fyp1 (patient_id) values ('"+s+"')";
        stmt.executeUpdate(insert);
        }
    }
catch(SQLException e){System.out.println(e);

标签: javasqlexception

解决方案


您需要创建另一个语句,因为第一个 ResultSetsrs在再次运行时已关闭stmt.executeUpdate(insert);

参见ResultSet的 JavaDocs

注意:当 Statement 对象关闭、重新执行或用于从多个结果序列中检索下一个结果时,生成它的 Statement 对象会自动关闭 ResultSet 对象。

顺便提一句。请始终发布完整的堆栈跟踪,例如带有相应的行号。


推荐阅读