JDBC的executeQuery和executeUpdate

在jdbc的specification中,executeQuery()用于返回结果集,也就是select语句的执行用这个;而executeUpdate是要返回updateCount, 而不能返回结果集,否则程序就会报错。
这些都清清楚楚,但是今天遇到一个奇怪的问题。
程序部署到服务器上和MS SQL Server使用时总是报错:executeUpdate must not return a result set,并且只有insert操作出错,而update不出错!但是在本机上和hsqldb使用时又是正常的。我试了几次之后,开到报错的行数,JtdsStatement.java中有错,我开始怀疑可能是jTds的bug,于是看jTds的源码,怎么看也没有问题,在google中搜索也没有结果。后来我怀疑是不是Hibernate的哪个地方的故障啊,于是有自己写了测试程序,不用Hibernate而之间用JDBC,首先测试了一个insert语句,没有问题;这就怪了,jtds没有问题啊。于是把问题程序中生成的SQL语句拿来试了一把,不行了!怪事!突然一想,那么在SQL Server的查询分析器中试一下呢?放到查询分析器中一查:居然返回了一条记录!哈哈,问题发现了,问题出在了触发器上:为了集成另外一个系统而不在我的程序中增加代码而做到insert触发器!同事在我操作的那个表上写的触发器用了select语句,但是没有把返回结果付给变量,所以我的程序对表进行插入操作会返回一个Result set,而Jdbc是严格定义了的,于是就出错了。改了一下触发器就好了。说实在的我对SQL Server不熟,开始也没有意识到触发器会这样工作。调这个程序调了大半天,所以这里提醒大家还有自己要小心一下.

摘自:http://zhuaxia.com/item/572271883

==========================================

刚才就碰到了这个问题.记录一下啊

原文地址:https://www.cnblogs.com/cnlmjer/p/4099866.html