日期:2014-05-20  浏览次数:20907 次

新手求助
各位大侠:
 
  帮忙看看以下一个方法的代码,为什么总是提示没有返回值。 


public ArrayList gettickeyinfo(String _trainN) throws SQLException
  {
   
  try
  {
  ary=new ArrayList();
  tickeyInfo tickeyinfo;
  open();  
  ps = con.prepareStatement("select * from TrainTickey where trainNo=?");
  ps.setString(1,_trainN);
  rs=ps.executeQuery();
  while(rs.next())
  {
  tickeyinfo=new tickeyInfo();
  tickeyinfo.setTrainN(rs.getString(1));
  tickeyinfo.setSeatNum(rs.getInt(2));
  tickeyinfo.setBedNum(rs.getInt(3));
  tickeyinfo.setSeatPrice(rs.getFloat(4));
  tickeyinfo.setBedPrice(rs.getFloat(5));
  ary.add(tickeyinfo);
   
  }
   
  return ary;
  } catch (SQLException ex)
  {
   
  }finally
  {
  rs.close();
  ps.close();
  con.close();
  }
   

  }
   


------解决方案--------------------
楼主想象的太过于理想话了,如果在try里出现了异常,那么就将转到catch块,而你的catch块里,没有任何的return,当然不能编译了。

要么return 一个值,要么抛出一个新异常
Java code

catch (SQLException ex) {
            // return null;
            throw new SQLException();
        }

------解决方案--------------------
访问数据库的时候,会遇到很多意想不到的问题,比如:数据库访问出错,网络连接中断等等。
另外,在关闭ResultSet,Statement,Connection等的时候,最好先判断一下是否null,不是null才关闭。
Java code

        if(rst != null){
            try{
                rst.close();
            }catch(SQLException sqle){
                sqle.printStackTrace();
            }
        }