gpt4 book ai didi

java - 在结果集打开时执行语句 (JDBC/JAVA)

转载 作者:行者123 更新时间:2023-12-01 23:21:08 24 4
gpt4 key购买 nike

在打开结果时执行独立语句是否安全或建议这样做?它们是否附加到不同的连接或与结果集相同的连接有关系吗?我特别关心结果如何持有锁(如果有的话),这可能会导致死锁。

例如。

while(resultSet.next()) {
Execute separate statements in here ( same or different connection )
}

结果集是否由底层游标或其他内容支持?

最佳答案

这里有几个问题。

首先,通常"is",在迭代 ResultSet 时运行其他 SQL 语句是可能且常见的。 。是的,ResultSets由光标支持。

这样做也可能会造成死锁,因此您只需要注意这一点即可。如果在循环内执行的 SQL 未修改与 ResultSet 相同的表中的行,那么您应该确保 ResultSet创建时并发模式为CONCUR_READ_ONLY ,一般尝试使用 TYPE_FORWARD_ONLY .

例如:

Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_READ_ONLY);

如果您使用CONCUR_READ_ONLYTYPE_FORWARD_ONLY一般来说,不应生成阻止写入的锁。使用相同的Connection还建议使用对象,因为这样游标和修改其他对象的 SQL 都在同一个事务中,因此不太可能导致死锁。

关于java - 在结果集打开时执行语句 (JDBC/JAVA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20624176/

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