使用存储过程(带参数的)

由于学习完了 数据的展示 javabean我就以为我基本上可以很缓慢的做一些jsp的程序了,在这期间我有大概的看了一下jdbc的相关东西。当然很混乱,这时我想做一个分页的技术。这种思维还是在我上大学时候学习asp的技术时的固定思维,当时以为解决了分页就学会了asp,呵呵。等在学习。net的时候分页技术就相对简单了很多。这一点上现在我在学习java时候,还是很欣赏.net。不愧是微软的东西。做了两年。net了,现在又来学习java,真的感觉挺对不起我这两年的衣食父母的。可是为了赚更多的该死的人民币。我只能这样三心二意了。
   好了下面言归正传,正是我调用存储过程的例子(带输入输出参数的)

private static String getTitleSql(String type, String startDate,
                                    String endDate) throws DAOException {
    DBconn db = null;
    String sql = null; //须返回的sql语句
    ResultSet rs = null;
    Connection con = null;
    CallableStatement call = null;
    try {
      db = new DBconn();
      con = db.getConnection();
      call = con.prepareCall("{call p_dtsgfztj_getsql_top(?,?,?,?,?)}"); //调用存储过程
      call.registerOutParameter(4, java.sql.Types.VARCHAR); //登记输出参数为字符串(out)
      call.registerOutParameter(5, java.sql.Types.INTEGER); //登记输出参数为数字(out)

      call.setString(1, startDate); //为in参数赋值
      call.setString(2, endDate); //为in参数赋值
      call.setString(3, type); //为in参数赋值
      rs = call.executeQuery(); //置入结果集中
      sql = call.getString(4); //取出字符串
    }
    catch (ConnectionException e) {
      throw new DAOException(e, "报表统计失败!");
    }
    catch (SQLException e) {
      throw new DAOException(e);
    }
    finally {
      if (rs != null) {
        try {
          rs.close(); //关闭结果集
        }
        catch (Exception e) {
          e.printStackTrace();
        }
      }
      if (call != null) {
        try {
          call.close();
        }
        catch (Exception ex) {
          ex.printStackTrace();
        }
      }
      if (con != null) {
        try {
          con.close(); //关闭连接
        }
        catch (Exception e) {
          e.printStackTrace();
        }
      }
    }
    return sql;
  }

-------------------------------------
弄这个的时候有一个很逗得小插曲,我把where条件整个的字符串作为参数写了一个存储过程。在查询分析器里是没有任何问题到的。结果到了java里就不可以了。总是所不能把varchar转换成int。活来只能放弃了。所以我现在想是不是call.setString(1, startDate); 只能设置某列的参数阿。而不能是一个where条件的字符串

posted on 2005-06-22 10:40  feeling  阅读(2957)  评论(0编辑  收藏  举报

导航