ResultSet未打开。操作' getString'不允许。验证自动提交是否已关闭。?

时间:2016-04-26 12:01:41

标签: java database derby

我正在使用apache derby并且在这里得到上述错误是我的代码,实际上我并没有让所有的孩子都在父母之下,它只给了我一个级别的孩子,所以请告诉我如何制作树父母和孩子,但这只给出一个级别的孩子有错误

获得连接

public static Connection getConnection(){

    Connection connection = null;

    try {
        Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();//
        //Get a connection
        connection  = DriverManager.getConnection(dbURL); 
        connection.setAutoCommit(false);
        connection.getAutoCommit();
    } catch (Exception except) {
        System.out.println(except);
    }
    return connection;
}

和最后一次读取rs1时第二次循环中的错误

    Statement stmt;


        stmt = MainUI.getConnection().createStatement();

1 个答案:

答案 0 :(得分:2)

我相信嵌套结果集是你的问题。

要打开两个不同的结果集,您必须有两个单独的Statement个实例,因此每个实例都可以有自己的ResultSet。否则,在同一个Statement实例上运行第二个查询将关闭第一个ResultSet

有关详细信息,请参阅此答案:https://stackoverflow.com/a/8579669/193453

另外,请查看java.sql.Statement类的Javadoc:

  

默认情况下,每个Statement对象只能同时打开一个ResultSet对象。因此,如果读取一个ResultSet   对象与另一个对象的读取是交错的,每个都必须已经存在   由不同的Statement对象生成。所有的执行方法都在   Statement接口隐式关闭一个statment的当前ResultSet   对象,如果存在开放的对象。