写在最后就可以了;如果有必要,还可以在catch后的block内对rsArray赋值

解决方案 »

  1.   

    按照他的代码,放在最后肯定会出错。
    代码改一下,就可以放在最后了:
    public ArrayList getResult(){
        ArrayList rsArray = null;        try{
            String sql=gs.getSQL();        ResultSet res=dbConn.executeQuery(sql);
            ResultSetMetaData rsma = res.getMetaData();
            int ccount = rsma.getColumnCount();
            //ArrayList rsArray = new ArrayList();
          rsArray = new ArrayList();
          while (res.next()) {
            for (int i = 2; i < ccount+1; i++) {
              //System.out.print(i);
              if (res.getString(i)==null){
                rsArray.add("");
              }else{
                rsArray.add(res.getString(i));
              }
            }
          }
        //return rsArray;
            
            }catch (Exception e) {
          e.printStackTrace();
        }
        return rsArray;
    }
      

  2.   

    写在最后,或则写在FINALLY里
      

  3.   

    ejbcreate为什么 阿,象你这杨 也不成啊
      

  4.   

    ejbcreate   可以了,可是为什么要这样 写呢?
      

  5.   

    我倒认为 楼主 放的位置是合理的;因为: 
         放在Try 的最后一行,当有异常抛出时,rsArray它就不会被正常返回,只有放在cacth()后才可以,但是,如果有异常抛出后,返回的rsArray还有没有意义???
         所以我觉得应该按楼主的位置放.  
         但是catch(Exception e )  {   e.printStackTrace(); return null;} 
         正常就返回 rsArray  否则 返回 null 
         这样写,可以根据返回的值判断数据库操作的正确性!!!
      

  6.   

    ejbcreate 的意思很明显呀!你把ArrayList rsArray = new ArrayList(); 放在 try { }之中,它相当与局部变量,在try之外当然不能访问了! 所以就不能return rsArray; 但是,如果把return rsArray;放在try { } 之内,像我说得那样,就没关系了!
      

  7.   

    小弟的意见应该综合楼主的和ejbcreate的:
    public ArrayList getResult(){
        ArrayList rsArray = null;        try{
            String sql=gs.getSQL();        ResultSet res=dbConn.executeQuery(sql);
            ResultSetMetaData rsma = res.getMetaData();
            int ccount = rsma.getColumnCount();
          rsArray = new ArrayList();
          while (res.next()) {
            for (int i = 2; i < ccount+1; i++) {
              //System.out.print(i);
              if (res.getString(i)==null){
                rsArray.add("");
              }else{
                rsArray.add(res.getString(i));
              }
            }
          }
        return rsArray;
            
            }catch (Exception e) {
          e.printStackTrace();
        } finally {
        return rsArray;}
    }
      

  8.   

    ejbcreate() 的对;程序没问题,就返回得到的值,否则返回空的
      

  9.   

    public ArrayList getResult(){
        ArrayList rsArray = new ArrayList();
        try{
            String sql=gs.getSQL();        ResultSet res=dbConn.executeQuery(sql);
            ResultSetMetaData rsma = res.getMetaData();
            int ccount = rsma.getColumnCount();
            while (res.next()) {
            for (int i = 2; i < ccount+1; i++) {
              //System.out.print(i);
              if (res.getString(i)==null){
                rsArray.add("");
              }else{
                rsArray.add(res.getString(i));
              }
            }
          }        
        }catch (Exception e) {
          e.printStackTrace();
        }
        return rsArray;
     }
    arraylist的定义要放到try的外边,否则操作数据库的时候要是抛例外的话,就执行不了rsArray的定义,所以后面返回时就肯定会出错了!