gpt4 book ai didi

java - 当PreparedStatement.execute()完成时,这并不意味着我的sql server过程结束了?

转载 作者:行者123 更新时间:2023-11-30 05:39:31 24 4
gpt4 key购买 nike

我有一个 Java 应用程序,正在其中对 SQL Server 2008 数据库执行一些查询。我正在尝试使用该代码段执行存储过程:

//...
try (Connection connection = dataSource.getConnection()) {
PreparedStatement preparedStmt = connection.prepareStatement("exec dbo.myProc");
preparedStmt.execute();
connection.commit();
connection.close();
}
//...

但是经过一些调试,我发现当连接被提交和关闭时,程序还没有结束。

所以我的问题是,为什么会这样?我怎样才能确保在关闭连接之前程序已经结束?

最佳答案

确保您在过程代码中设置了SET NOCOUNT ON和/或使用preparedStmt.getMoreResults()返回的所有结果。这将确保进程运行完成。

SET NOCOUNT ON 将抑制需要消耗的 DONE_IN_PROC(行计数)。除了行计数之外,向客户端返回结果的其他操作(例如 SELECTPRINTRAISERROR)将需要 getMoreResults( ) 检索结果并确保过程运行完成。如果您的过程代码中没有这些并且没有引发异常,则仅 SET NOCOUNT ON 就足够了。

关于java - 当PreparedStatement.execute()完成时,这并不意味着我的sql server过程结束了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55951241/

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