gpt4 book ai didi

java - 在检索输出参数的值之前应该调用 commit() 吗?

转载 作者:行者123 更新时间:2023-11-30 07:51:22 25 4
gpt4 key购买 nike

在编写 java JDBC 代码来调用存储过程时,我正在使用 con.setAutoCommit(false); 我的问题是以下方法有何区别:

方法一:

        con = DBConnection.getConnection();
con.setAutoCommit(false);
stmt= con.prepareCall("{call updateEmp(?,?,?,?,?,?)}");
stmt.setInt(1, id);
stmt.setString(2, name);
stmt.setString(3, role);
stmt.registerOutParameter(6, java.sql.Types.VARCHAR);

stmt.executeUpdate();
con.commit();
//read the OUT parameter AFTER commit
String result = stmt.getString(6);

或方法 2:

        // Read the OUT parameter BEFORE commit
String result = stmt.getString(6);
con.commit();

最佳答案

我认为这取决于您调用的存储过程是否自行提交。我希望有一个更新过程接受参数,并设置参数以在内部进行提交或回滚。

在这种情况下,调用 setAutoCommit(true) 或调用 con.commit() 将没有任何效果,无论您何时调用 stmt.getString(6),out 参数都会有一个值。如果存储过程本身没有提交,如果您在调用 stmt.getString(6) 之后调用 con.commit(),我希望您的输出参数为 null。

关于java - 在检索输出参数的值之前应该调用 commit() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47226722/

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