mssql2000升级到mssql2008出现 存储过程无法返回记录集

使用现有的jdbc1.2 for 2005做数据库驱动时,发生存储过程无法返回记录集.在详细的查询资料后,并没有发现合适的解决方案.

但是使用了Sprinta7.40 的最新数据库驱动,发现可以正常的支持mssql2005和mssql2008,但是问题是Sprinta驱动是要钱的,不然就只有2个数据连接池给你用。

建议是使用其它的数据库驱动程序,比如hibernate的,不过我还没有测试。强烈bs微软自己的数据库驱动。

囧。。。。。。。。。。。

再次做了一下,发现一个问题是ResultSet may only be accessed in a forward direction.虽然设置了 ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY参数,还是会出现 ResultSet may only be accessed in a forward direction这个问题,做专门的mssql2008跟踪以后,发现并不是过程的问题。
不过里面的错误信息提醒了我,找到答案“无法在给定的语句中打开服务器游标。请使用默认结果集或客户端游标。”

cstmt = conn.prepareCall("{call cr_OrderByTrade(?,?,?,?,?)}",ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY );
            cstmt.setInt(1, action);
            cstmt.setString(2, comCode);
            cstmt.setString(3, depCode);
            cstmt.setString(4, from);
            cstmt.setString(5, to);
            rs = cstmt.executeQuery();
            rs.last();

 改成

cstmt = conn.prepareCall("{call cr_OrderByTrade(?,?,?,?,?)}",ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY );
            cstmt.setInt(1, action);
            cstmt.setString(2, comCode);
            cstmt.setString(3, depCode);
            cstmt.setString(4, from);
            cstmt.setString(5, to);
            cstmt.executeQuery();
            rs = cstmt.getResultSet();
            //rs = cstmt.executeQuery();
            rs.last();

 改成以下后,数据库查询成功。不过,数据库驱动没有用微软的sqljdbc.jar。而是用的jtds.jar驱动。不管怎么样,成功了。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值