资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 软件开发 >
Advertisement
文章正文

讨论:关于关闭数据库联接问题

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   

建立一个数据库连接的时候,通常是  
   
  Connection   con   =   ....通过某种方式获得连接  
   
  try  
  {  
      .....进行相关数据库查询  
  }  
  catch   (SQLException   e)  
  {  
      ....相关处理  
  }  
  finally  
  {  
        ...关闭连接  
  }  
  问题就出在关闭连接哪,因为通常不希望   finally抛异常,但是con。close()又抛出异常  
  可不可以直接   con   =   null;  
  这根con。close();有什么区别?  
  con   =   null;   这种做法好吗?  
   
  迷糊中~~~~  
   
  ps:   con   =   null;后会等着jvm来收回资源。con。colse();应该是自己主动释放资源吧。  
   
   
   
 

网友回答:

发表者:Chinatosun

通常是con.close。  
  学习。

发表者:sirfei

应该是这样的

发表者:youthy_yy

//<!--   关闭数据库连接-->  
  public   void   close()   {    
  try   {    
      try{  
  if   (rs   !=   null)   {    
  rs.close();    
  rs   =   null;    
  }    
  if   (stmt   !=   null)   {    
  stmt.close();    
  stmt   =   null;    
  }    
  if   (cstmt   !=   null)   {    
  cstmt.close();    
  cstmt   =   null;    
  }    
  if   (dbc   !=   null)   {    
  dbc.close();    
  dbc   =   null;    
  }    
          }   catch   (SQLException   ex)   {    
  System.out.println("close   error:   "   +   ex.getMessage());    
  }  
      }  
      finally   {  
              try   {if   (rs   !=   null)   rs.close();rs   =   null;}     catch(Exception   ex){};  
              try   {if   (stmt   !=   null)   stmt.close();stmt   =   null;}     catch(Exception   ex){};  
              try   {if   (cstmt   !=   null)   cstmt.close();   cstmt   =   null;}     catch(Exception   ex){};  
              try   {if   (dbc   !=   null)   dbc.close();dbc   =   null;}     catch(Exception   ex){};  
              }    
    }    
   
  finally总是会执行的,不可以直接用conn=null;要先执行close();方法

发表者:cuizm

con=null,并没有关闭连接.  
  你应该这样:  
   
  try  
  {  
      .....进行相关数据库查询  
  }  
  catch   (SQLException   e)  
  {  
      ....相关处理  
  }  
  finally  
  {  
          try  
          {  
                  ...关闭连接  
          }  
          catch   (SQLException   e)  
          {  
                  ....相关处理  
          }  
  }  
 

发表者:Plat

con   =   null只是销毁了con这个Connection的引用,如果有别的Connection对象引用了连接对象那资源还是不能释放。con.close会销毁所有对这个连接对象的引用。

发表者:gow

Plat(2004-04-13)    
  brucejia(大碗喝酒,大块吃肉)    
  说的很对,千万不能con=null,一定要con.close()  
  有过这样的经验教训!

发表者:treeroot

conn.close();关闭连接,释放相关资源。  
  conn=null;这一句时多余的,这个临时变量退出了执行范围后自动消失。  
 

发表者:febchen

和文件、socket通讯一样  
  最好使用close方法关闭连接  
  否则会有不可预知的后果  
  不可预知虽是书面用语,而且很多情况下没什么问题,但还是不要冒险的好  
   
  同意楼上的,在java中conn=null没有什么作用


 

 
热门推荐笔记本: IBM笔记本
相关文章:
webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
©2007 popbb.net All Rights Reserved