第一种写法
public void getit(Connection con,String id)throws Exception
{
String sql="select * from .. where id="+id;
Statement sm = conn.createStatement();
ResultSet rs = sm.executeQuery(sql);
if(rs.next){
System.out.print(rs.getString(2));
}
if(rs!=null)
rs.close();
rs=null;
if(sm!=null)
sm.close();
sm=null;
}
第二种写法
public void getit(Connection con,String id)throws Exception
{
Statement sm =null;
ResultSet rs=null;
String sql="select * from .. where id="+id;
try{
sm = conn.createStatement();
rs = sm.executeQuery(sql);
if(rs.next){
System.out.print(rs.getString(2));
}}catch(Exception e){
 throw new Exception(e);
}finally{
   if(rs!=null)
     rs.close();
     rs=null;
   if(sm!=null)
     sm.close();
     sm=null;
}
}
第二种写法比较安全,但是他会影响性能。

解决方案 »

  1.   

    public void getit(Connection con,String id)
    {
    Statement sm =null;
    ResultSet rs=null;
    String sql="select * from .. where id="+id;
    try{
    sm = conn.createStatement();
    rs = sm.executeQuery(sql);
    if(rs.next){
    System.out.print(rs.getString(2));
    }}catch(Exception e){
     e.printStack();
    }finally{
       if(rs!=null)
         rs.close();
         rs=null;
       if(sm!=null)
         sm.close();
         sm=null;
    }
    }
    这么写不好吗
      

  2.   

    第二种方法好,Statement,ResultSet如果不关闭,可能引起内存泄漏,这样麻烦更大.
      

  3.   

    第二种写法为JAVA的推荐写法,我觉得没什么问题,不知道楼主为什么说会影响性能?
      

  4.   

    因为捕获错误再抛出会影响性能,
    但是如果resultset 或者statement 自身在出现错误的时候能自行关系,那使用第一种写法更好。是不是?