xqn516 2015-01-21 10:55 采纳率: 100%
浏览 6346
已采纳

java使用jdbc调用存储过程,没有返回结果集。。

整个过程是这样的:之前的程序已经上线运行了。后来客户数据库升级,从sqlServer2005升级到sqlServer2008.当然系统也做了相应改动。我们是第三方软件,调用他们的数据库中的存储过程来查询数据。他们升级完系统和数据库之后,我们就查询数据报错。
然后最先报的错是驱动版本问题。我就到网上下了sqljdbc4.jar。替换了之后不再报驱动的问题。但是一直无结果集。于是我直接把调用存储过程的sql语句放到数据库中执行。是能查到结果的。然后,我又把sql语句换成一个简单的select语句。这下有结果集了。那么问题出在哪?该怎么改?

 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();


     con = DriverManager.getConnection("jdbc:sqlserver://10.4.2.10:1433;databaseName=cmp_jxt_jmpt","jmpt_open","jmpt_open*1nl0#");

//   proc_stmt = con.prepareCall("  exec dbo.Proc_Jmpt_ReturnTemp  'bmtz','"+sfzjh+"',5 ");
     proc_stmt = con.prepareCall("select top 5  userId,loginTime,refreshtime from user_online_data");
//   proc_stmt.setString(1, "bmtz");
//   proc_stmt.setString(2, sfzjh);
//   proc_stmt.setString(3, "5");




     rs = proc_stmt.executeQuery();

     while (rs.next()) {

         String newsId = rs.getString("userId");
         String title = rs.getString("loginTime");
         String detName = rs.getString("refreshtime");
//       String addDate = rs.getString("addDate");
//       OA_BMTZ t = new OA_BMTZ();
//       t.setNewsId(rs.getString("newsId"));
//       t.setTitle(rs.getString("title"));
//       t.setDetName(rs.getString("detName"));
//       t.setAddDate(rs.getString("addDate"));

//       list.add(t);
     }   

代码中可以看出我的修改轨迹。
问题出在哪,请大神指点迷经。

  • 写回答

6条回答

  • qishinihenhao 2015-01-21 14:14
    关注

    这是一个 java调用数据库存储过程的 简单例子 你可以看看:

    http://www.sh0745.com/java/201501/21221536.html

    这个是 java调用存储过程的 详解:
    http://www.sh0745.com/java/201501/21221344.html

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler