zoukankan      html  css  js  c++  java
  • 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

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

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

  • 相关阅读:
    gulp-rev + gulp-rev-collector解决前端缓存
    NSIS ERROR解决方法
    tortoiseGit教程(常用图文教程)
    Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are already in use.解决办法
    Windows之——pid为4的system进程占用80端口的解决办法
    小程序直播开发
    微信小程序直播接入指南
    解决网易云因版权无法生成外链歌单
    小程序之点击下载图片到本地
    PS 有哪些小技巧让你好用到哭?
  • 原文地址:https://www.cnblogs.com/cnlmjer/p/4099866.html
Copyright © 2011-2022 走看看