本帖最后由 killerggf 于 2010-02-04 00:13:57 编辑

解决方案 »

  1.   


      public ArrayList Bylw_chazhaozhuanye(String dlfzr){
            
            db = new ConnectDB();
            //创建并实例化一个ArranyList变量
            ArrayList fuzezhuanye=new ArrayList();        String sql="exec by_zwx_cyt_ckzy @zyfzr='"+dlfzr+"'";
            //调用db.read(sql)方法执行sql语句
            ResultSet rs = db.Read(sql);
            try {
                //判断rs是否用结果集
                while(rs.next()){
                    vo=new Bylw_fzr_actionform();
                    vo.setZydm(rs.getString("zydm"));
                    vo.setZymc(rs.getString("zymc"));
                    
                    fuzezhuanye.add(vo);
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            db.closed();
            return fuzezhuanye;
        }红色那句有问题?
      

  2.   

    String sql="exec by_zwx_cyt_ckzy @zyfzr='"+dlfzr+"'";
      

  3.   

    我想应该是跟表变量返回的结果集的类型有关,可能是ResultSet不能识别表变量返回的结果集类型。不是很了解ResultSet的用法,不知道是不是,不知道表变量返回的结果集类型跟一般的查询一个正式表所返回的结果集类型是不是相同的。
      

  4.   

    弄了两天,终于解决问题了,解铃还需系铃人,还是靠自己才行,说一下原因吧,免得后来人也要弄得那么烦。其实原因很简单的,就是Statement的问题,开始的时候我是用以下方法去返回ResultSet的:(注意rs = stm.executeQuery(sql);
    public ResultSet Read(String sql){
    if(sql==null)sql="";
    getStmed();
    ResultSet rs=null;
    try {
    //System.out.println("sql:" + sql);
    rs = stm.executeQuery(sql);
    } catch (SQLException e) {
    rs=null;
    e.printStackTrace();
                System.out.println("查询数据库失败!");
    }
    return rs;
    }
    用上面方法去执行我上面提到的存储过程的话,tomcat就会报错:该语句没有返回结果集。**********************************************************************************
    但是后来我把public ResultSet Read(String sql)改成了这样:注意(stm.execute(sql);  
        rs  =   stm.getResultSet();
    ) public ResultSet Read_execute(String sql){
    if(sql==null)sql="";
    getStmed();
    ResultSet rs=null;
    try {
    stm.execute(sql);  
        rs  =   stm.getResultSet();
    } catch (SQLException e) {
    rs=null;
    e.printStackTrace();
                System.out.println("查询数据库失败!");
    }
    return rs;
    }这样tomcat就不会报“该语句没有返回结果集”的错了***********************************************************
    原因总结:
    1、execute(String sql) :
              执行给定的 SQL 语句,该语句可能返回多个结果。
    2、executeQuery(String sql) :
              执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。
    好啦!问题解决了,是散分的时候了.....