CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2EE / EJB / JMS

再问如何关闭数据库连接

楼主kuazhang123()2006-03-04 09:34:27 在 Java / J2EE / EJB / JMS 提问

测试类:  
      db   ds   =new   db();  
    Connection   conn   =   ds.getconn();  
     
    UserDB   ud   =   new   UserDB(conn);  
     
    System.out.println("表的信息总数="+ud.count());  
     
      List   li   =   ud.allUser();  
      Iterator   it   =   li.iterator();  
  System.out.println("显示表中的数据");  
   
      while(it.hasNext()){  
      User   ur   =   (User)   it.next();  
      System.out.println("----------------------");  
      System.out.println("id="+ur.getId());  
      System.out.println("name="+ur.getUsername());  
       
      System.out.println("pasd="+ur.getPassword());  
      }  
       
  显示数据总数的方法  
    public   int   count()   throws   Exception   {  
  int   count   =   0;  
  String   countSql   =   "SELECT   COUNT(*)   from   tbl_user";  
  try   {  
  //Statement   stmt   =   conn.createStatement();  
  ps   =   conn.prepareStatement(countSql);  
  ResultSet   rs   =   ps.executeQuery();  
  if   (rs.next())   {  
  count   =   rs.getInt(1);  
  }  
   
    BaseDB.closedb(conn);  
   
  }   catch   (Exception   e)   {  
  e.printStackTrace();  
  }    
  //     finally   {  
  // //   BaseDB.closedb(conn);  
  //     try   {  
  //   if   (conn   !=   null)  
  //   conn.close();  
  //   }   catch   (Exception   ea)   {  
  //   ea.printStackTrace();  
  //   }  
  //   }  
  return   count;  
  }  
   
  显示数据的方法  
  public   Vector   allUser()   throws   Exception   {  
  Vector   allUser   =   new   Vector();  
  String   selectSql   =   "select   id,username,password   from   tbl_user";  
  try   {  
  Statement   stmt   =   conn.createStatement();  
  rs   =   stmt.executeQuery(selectSql);  
  while   (rs.next())   {  
  User   user   =   new   User();  
  user.setId(rs.getInt("id"));  
  user.setUsername(rs.getString("username"));  
  user.setPassword(rs.getString("password"));  
  allUser.add(user);  
  }  
  }   catch   (Exception   e)   {  
  e.printStackTrace();  
  }   finally   {  
  //   BaseDB.closedb(conn);  
  // try   {  
  // if   (conn   !=   null)  
  // conn.close();  
  // }   catch   (Exception   ea)   {  
  // ea.printStackTrace();  
  // }  
  }  
  return   allUser;  
  }  
   
   
  --  
  public   UserDB(Connection   conn)   {  
  this.conn   =   conn;  
  }  
   
  通过构造函数得到数据库连接。。  
   
  问题:为什么在显示为什么不让我关闭数据库连接啊。  
  问题点数:100、回复次数:6Top

1 楼kuazhang123()回复于 2006-03-04 09:34:59 得分 0

请问路过的高人,我的代码是不是有问题啊??郁闷。。Top

2 楼kuazhang123()回复于 2006-03-04 09:43:32 得分 0

我是新手,我想在这个测试类中既要得到数据,又要显示数据的总数,为什么把两个方法中的finally都屏蔽就可以正常显示,不屏蔽就不可以啊。如果用完数据库连接不关闭的话,那么不就不合理了吗?请问我该如何修改。。Top

3 楼lydvqq(碧水情缘♀黑哥)回复于 2006-03-04 09:59:56 得分 0

请看你的BaseDB.closedb是怎么写的Top

4 楼shazi_pig(傻子)回复于 2006-03-04 10:04:59 得分 0

BaseDB.closedb(conn);  
   
  }   catch   (Exception   e)   {  
  e.printStackTrace();  
  }  
  //   finally   {  
  //   //   BaseDB.closedb(conn);  
  重复的关闭了.而且代码的写法我不太喜欢,在我们的外面定义了conn,这就表示我们在外面必需关闭.同时conn传给了类的内部,作为成员,那么又必需关闭.我们可以把conn作为参数给方法就可以了.没有必要作为属性.做为了属性,我们在前面的方法关闭后,后门的还必需重新得到联接,要不conn为空了.Top

5 楼lydvqq(碧水情缘♀黑哥)回复于 2006-03-04 10:09:41 得分 0

同意楼上的说法.你把con传给BaseDB了.就完全交给BaseDB去处理.说不定BaseDB是个连接池.根本就不用关闭.Top

6 楼wenm_owen(星星)回复于 2006-03-04 12:34:16 得分 0

你要定义为全局的才可以嘛Top

相关问题

  • 数据库连接关闭问题
  • 关闭数据库连接问题
  • jsp 访问数据库的连接关闭问题
  • 数据库连接没有关闭回出现什么问题
  • 关于数据库的连接的关闭的一些问题
  • 数据库连接对象Conn关闭的问题,谢谢
  • 数据库连接未关闭的问题?
  • 关于数据库连接关闭的问题
  • 连接数据库问题
  • 数据库连接问题

关键词

  • 数据库
  • 连接
  • 数据
  • basedb
  • closedb
  • 关闭
  • conn
  • ur
  • 数据库连接
  • ud

得分解答快速导航

  • 帖主:kuazhang123

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo