`
瑾上添花
  • 浏览: 5401 次
  • 性别: Icon_minigender_2
  • 来自: 沈阳
文章分类
社区版块
存档分类
最新评论

java中用jdbc调用SQLServer带返回结果集存储过程的问题

阅读更多
自学java中用jdbc调用SQLServer带返回结果集存储过程但是却发生“The executeQuery method must return a result set”错误
存储过程如下:
create procedure exchangeMoney2(
     @account_id_in bigint,--转入钱的账户
     @account_id_out bigint,--转出钱的账户
     @exchange_money float--转账金额
)as
begin
     --创建临时表#account
    create table #account
       (account_id bigint null,account_name varchar(80) null,
        account_money money null,add_time datetime null)
   --将转账前的2个账户信息插入到临时表#account中
   insert into #account
         select * from account
         where account_id=@account_id_out or account_id=@account_id_in
   --更新转出账户的余额
   update account set account_money=account_money-@exchange_money
         where account_id=@account_id_out
   --更新转入账户的余额
   update account set account_money=account_money+@exchange_money
         where account_id=@account_id_in
   --将转账后的2个账户的账户信息插入到临时表#account中
   insert into #account
       select * from account
       where account_id=@account_id_out or account_id=@account_id_in
   --返回临时表#account中的数据
   select * from #account
   --删除临时表#account中的内容
    truncate table #account
   --删除临时表#account
   drop table #account
end



jsp页面如下:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@page import="java.sql.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>调用存储过程</title>
  </head>
  <body>
   <%
      Class.forName("net.sourceforge.jtds.jdbc.Driver");
      String url = "jdbc:jtds:sqlserver://localhost:1433;DatabaseName=webcounter";
      Connection conn = DriverManager.getConnection(url,"sa","sa");
      String callExchangeMoneyStr = "{?=call exchangeMoney(1,2,100)}";
      CallableStatement procedure = conn.prepareCall(callExchangeMoneyStr);
      procedure.registerOutParameter(1,Types.OTHER);
      ResultSet rs = procedure.executeQuery();
    %>
    <table border="1" cellpadding="0" cellspacing="0" align="center" width="400">
      <tr>
         <td colspan="4" align="center">转账操作</td>   
      </tr>
      <tr>
         <td>账号</td><td>户名</td>
         <td>余额</td><td>账户生成时间</td>
      </tr>
      <tr><td colspan="4" align="center">转账前的账户信息</td></tr>
      <%
        int i=0;
        while(rs.next()){
            i++;
            if(i==3){
       %>
       <tr><td colspan="4" align="center">转账后的账户信息</td></tr>
       <%} %>
       <tr>
          <td><%=rs.getLong("account_id") %></td>
          <td><%=rs.getString("account_name") %></td>
          <td><%=rs.getFloat("account_money") %></td>
          <td><%=rs.getDate("add_time") %></td>
       </tr>
       <%} %>
    </table>
  </body>
</html>
分享到:
评论

相关推荐

    JAVA上百实例源码以及开源项目

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    JAVA上百实例源码以及开源项目源代码

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    Java面试宝典-经典

    22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决...

    Java面试宝典2010版

    22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决...

    java面试题大全(2012版)

    22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决...

    最新Java面试宝典pdf版

    22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决...

    java面试宝典2012

    22、用JDBC如何调用存储过程 119 23、JDBC中的PreparedStatement相比Statement的好处 120 24. 写一个用jdbc连接并访问oracle数据的程序代码 121 25、Class.forName的作用?为什么要用? 121 26、大数据量下的分页解决...

    Java面试笔试资料大全

    22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决...

    JAVA面试宝典2010

    22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决...

    Java面试宝典2012新版

    22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决...

    Java面试宝典2012版

    22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【数据库】存储过程与SQL语句对比 111 【数据库】数据库优化 113 【数据库】MySQL常用的四种引擎的介绍 118 【架构】简单描述MVC模式 120 【架构】RPC的介绍 121 什么叫RPC 121 RPC流程 121 【架构】SOA介绍 122 ...

    Java 面试宝典

    Java 基础部分..................................................................................................................... 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么...

    测试培训教材

    安装好SQL Server 2000后注意启动SQLServer服务器 3、安装QC9.0 服务器名称也可以是IP地址 4、启动QC9.0 5、QC9.0安装问题解决 - JBOSS启动不...

Global site tag (gtag.js) - Google Analytics