结果集未打开。不允许操作“getString”。验证自动提交是不是关闭。?

Posted

技术标签:

【中文标题】结果集未打开。不允许操作“getString”。验证自动提交是不是关闭。?【英文标题】:ResultSet not open. Operation 'getString' not permitted. Verify that autocommit is off.?结果集未打开。不允许操作“getString”。验证自动提交是否关闭。? 【发布时间】:2016-04-26 12:01:40 【问题描述】:

我正在使用 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 条语句打开一个连接我已尝试访问与其他语句的相同连接 【参考方案1】:

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

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

有关更多信息,请参阅此答案:https://***.com/a/8579669/193453

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

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

【讨论】:

接受的答案是因为您说的部分为 1 条语句打开一个连接我已尝试访问与其他语句的相同连接

以上是关于结果集未打开。不允许操作“getString”。验证自动提交是不是关闭。?的主要内容,如果未能解决你的问题,请参考以下文章

连接关闭时结果集未关闭?

连接关闭时结果集未关闭?

django 查询集未显示准确结果(构建新闻应用程序)

分析视图中的多维数据集未在 Saiku Analytics 中显示

虹膜数据集未显示“物种”列

rs.getString(1) 有啥功能?