比如SQL Server的一个存储过程: create procedure proc_test @q_type int,@value int,@count int outputasbegin update mytable set value = @value where type = @q_type set @count = @@rowcount select * from mytable where type = @q_typeendgo这个存储过程,既有输出参数,又有返回结果集,而用java调用他,两者都要取到,则代码如下: Connection conn = MyConnectionPool.getConnection();CallableStatement cstmt = conn.prepareCall("{call proc_test(?,?,?)}");cstmt.setInt(1, type);cstmt.setInt(2, value);cstmt.registerOutParameter(3, java.sql.Types.INTEGER);ResultSet rs = cstmt.executeQuery();while(rs.next()) { doSomeThingToResultSet(rs);}doSomeThingToOutParameter(cstmt.getInt(3));rs.close();cstmt.close();conn.close();其中的关键在于哪儿呢?必须用cstmt.executeQuery()来取得结果集,用cstmt.execute()然后getResultSet()是取不到的,而executeQuery()能保证先执行update再select;获得输出参数的cstmt.getInt(3)必须在处理完结果集的所有内容后再执行,如果把上述代码改成如下:........doSomeThingToOutParameter(cstmt.getInt(3));while(rs.next()) { doSomeThingToResultSet(rs);}........ 后果就是,在rs.next()的时候,会抛出异常:java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Object has been closed.很有趣,不是么??
详细解决方案
java调用sql server存储过程示范
热度:76 发布时间:2016-05-05 14:31:44.0
相关解决方案
- java 乱码 汉字是 ? 如何转换成汉字
- java web 登录次数限制,该如何解决
- java 工商银行网银支付 B2B的 都亟需什么,需要注意什么
- Java Applet程序从JDK6升级到7时遇到的有关问题
- myeclipse联接sql server 2008看不到用户表
- java web 视频相干
- java 系统单点登录解决方案
- java 获取客户端IP解决办法
- JAVA 后台怎么获得前台页面FCKedit编辑器中的内容以及内容的样式
- java 正则化匹配有关问题
- JAVA WEB导航条,该怎么处理
- java 中Node 有关问题
- 吐了,java Timer 终止不了。
- java web开发解决办法
- 关于 java cast 有关问题,你明白不
- java ftp 下传和上载乱码有关问题
- java web项目上的一些文件
- 在哪找的SQL Server 2005数据库驱动文件?为什么sql server2005安装盘上面没有找到
- Hibernate操作数据库 报错java.lang.Integer cannot be cast to java.lang.String如何改
- java struts 文件上载
- java web baidu map开发
- JAVA WEB导航条解决办法
- java 编写ftp上载
- java web中的一个有关问题,困扰小弟我很久了
- java web 与tomcat解决办法
- java web基于j2ee的一些有关问题
- java 内网外网的一个需求,该怎么处理
- jsp 页面 安插ArrayList 报错。为什么,已经加了import="java.util."了呀!
- java dwg 怎样用java把dwg便是aoutcad的格式文件转换成gif,jpg等格式
- 求《Java Web 程序设计与项目实践》解决办法