gpt4 book ai didi

java - 如何在 jdbc 与 mysql 中提交连接后保持结果打开?

转载 作者:可可西里 更新时间:2023-11-01 07:45:43 24 4
gpt4 key购买 nike

我正在将 jdbc 与 mysql 一起使用并使用事务。在

while(resultset.hasnext()){}

当我提交连接时,我的结果集关闭,当第二次循环迭代时,它抛出无法在关闭的结果集上执行操作的异常。同时我也设置了这些参数

statement1 = connection1.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE, ResultSet.HOLD_CURSORS_OVER_COMMIT);

但我无法在提交后保持 ResultSet 打开状态。

while(resultSet.next()){        
id=resultSet.getInt(1);
c1 = resultSet.getString(2);
c2 = resultSet.getDate(3);
c3 = resultSet.getString(4);
c4 = resultSet.getString(5);
c5 = resultSet.getString(6);
c6 = resultSet.getString(7);
c7 = resultSet.getString(8);
c8 = resultSet.getString(9);
c9 = resultSet.getString(10);
c10 = resultSet.getString(11);
c11 = resultSet.getString(12);
c12 = resultSet.getString(13);
c13 = resultSet.getString(14);
c14 = resultSet.getDate(15);
preparedStatement.setString(1, c1);
preparedStatement.setDate(2, c2);
preparedStatement.setString(3, c3);
preparedStatement.setString(4, c4);
preparedStatement.setString(5, c5);
preparedStatement.setString(6, c6);
preparedStatement.setString(7, c7);
preparedStatement.setString(8, c8);
preparedStatement.setString(9, c9);
preparedStatement.setString(10, c10);
preparedStatement.setString(11, c11);
preparedStatement.setString(12, c12);
preparedStatement.setString(13, c13);
preparedStatement.setDate(14, c14);
preparedStatement.executeUpdate();

query = "UPDATE abc SET isUpdated = 1 WHERE abc_id= "+id;
statement1.executeUpdate(query);
System.out.println("holdablity... "+resultSet.getHoldability());
connection1.commit();
System.out.println(connection1+"and result is====="+resultSet+" result status is "+resultSet.isClosed()+" connection1 is "+connection1.isClosed());
System.out.println("holdablity... "+resultSet.getHoldability());
connection2.commit();
System.out.println(connection1+"and result is====="+resultSet+" result status is "+resultSet.isClosed()+" connection2 is "+connection2.isClosed());
System.out.println("Data copied........");

}

最佳答案

一旦您提交了事务,结果集将自动关闭。 Commit 方法就像告诉所有的插入/更新已经成功完成。所以它关闭了结果集。
为了达到同样的效果,我可以建议的几种替代方法是,
1.将结果集数据转储到一些集合类中,以便您可以随时从中检索或获取数据。即使事务已提交且结果集已关闭。
2.你可以先让autocommit属性为真。然后,您可以在结果集的迭代循环中调用存储过程,并使该过程在没有错误的情况下提交结果。通过这种方式,您的结果集将被打开并且数据已通过过程提交。
任何方式你选择。无论如何,您都必须变通。

关于java - 如何在 jdbc 与 mysql 中提交连接后保持结果打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20739880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com