当前位置:  技术问答>java相关

诚心请教关于数据库连接池的问题,请高手前来指点,人人有分!!!!

    来源: 互联网  发布时间:2015-09-07

    本文导语:  小弟在网上看到了关于数据库连接池的一份代码DBConnectionManager.java(听说是几年前一个叫好兵的人写的),就试着调了调,基本上调通了,可是我想把它写在一个javabean里面,然后在每一页调用的时候,用就可以了。...

小弟在网上看到了关于数据库连接池的一份代码DBConnectionManager.java(听说是几年前一个叫好兵的人写的),就试着调了调,基本上调通了,可是我想把它写在一个javabean里面,然后在每一页调用的时候,用就可以了。于是自己又找了一个通用的访问数据库的javabean,并且在javabean中调用DBConnectionManager。请问我下面写的对么?

package sqlbean;
import sqlbean.*;
import java.sql.*;
import java.io.*;

public class sqlbean
{
     String StrError="";
     Connection conn=null;
     ResultSet rs=null;
     Statement stmt=null;
     public sqlbean()
     {  
    try
    {
        String poolName="JdbcOdbcInformix";             //定义连接池名
        DBConnectionManager dbMrg =DBConnectionManager.getInstance();
        conn = dbMrg.getConnection(poolName);
        stmt = conn.createStatement();
    }
    catch(java.sql.SQLException e)
    {
         System.err.println("打开数据库错:"+ e.getMessage());
    }
 }
//=====================通用查询用的SQL语句串==========================
//添加语句
public String ExecuteAdd(String sql)
{    
    rs=null;
    int count;
    try
    {    
         count= stmt.executeUpdate(sql);
         return("success");
    }
    catch(SQLException ex)
    {
        System.err.println("查询语句出错:"+ex.getMessage());
        StrError=ex.getMessage();
        return(StrError);
    }
 
}

//===============================================
//数据库修改记录操作
public String ExecuteUpdate(String sql)
{
    rs=null;
    int count;
    try
    {    
        count= stmt.executeUpdate(sql);
         return("success");
    }
    catch(SQLException ex)
    {
        System.err.println("查询语句出错:"+ex.getMessage());
        StrError=ex.getMessage();
        return(StrError);
    }
    
}
//===============================================
//数据库删除记录操作
public String ExecuteDelete(String sql)
{
    rs=null;
    try
    {    
         stmt.executeUpdate(sql);
         return("success");
    }
    catch(SQLException ex)
    {
        System.err.println("查询语句出错:"+ex.getMessage());
        StrError=ex.getMessage();
        return(StrError);
    }
    
}
//=====================查询用的SQL语句串可以滚动==========================
public ResultSet ExecuteQuery(String sql)
{
    rs=null;
    try
    {    
         rs= stmt.executeQuery(sql);
         return (rs);
    }
    catch(SQLException ex)
    {
        System.err.println("查询语句出错:"+ex.getMessage());
    }
    return rs;
}

//=====================取结果集数量==========================
public int GetCount(String sqlTableAndWhere)
{
    rs=null;
    try
    {    
         sqlTableAndWhere="select count(*) as cnt from " + sqlTableAndWhere;
         rs=stmt.executeQuery(sqlTableAndWhere);
         if (rs.next()){
         int totalRec=rs.getInt("cnt");
         rs.close();
         return (totalRec);
         }
         else  return (0);
    }
    catch(SQLException ex)
    {
        System.err.println("查询语句出错:"+ex.getMessage());
    }
    return (0);
}
//===========================
//关闭数据库
public void closeconn()
{
     try
     {   //登记JDBC驱动程序
          conn.close();
      }
     catch(SQLException e)
     {
         System.err.println("数据库关闭错:"+ e.getMessage());
     }
}

//============================
//关闭记录集并且关闭数据库 
public void closedb(ResultSet rs)
{
     try
     {    
          rs.close();
          conn.close();
      }
     catch(SQLException e)
     {
         System.err.println("数据库关闭错:"+ e.getMessage());
     }



//保存原来的查询
public ResultSet Query(String sql)
{
    rs=null;
    try
    {    
         rs= stmt.executeQuery(sql);
         return (rs);
    }
    catch(SQLException ex)
    {
        System.err.println("查询语句出错:"+ex.getMessage());
    }
    return rs;
}

}

但javabean中的closeDB(ResultSet rs)方法是直接关了数据库连接,这样是不是不对?如果不对,不知道这个方法怎么重写,才能发挥连接池的作用?

另外在jsp中是不是这样调用:

....
.....


请各位说说,ok??


|

|

|
没有什么对还是不对的,
只是看你的业务逻辑是怎么样,

在JSP中,若你执行了cloasedb的操作,
则在以下的代码中将不能用到rs对象了。

只能在你的while循环中做处理

|
你的javabean里面没有用到连接池呀

|
关闭可以这样
rs.close()
stmt.close()
con.close()

不过我觉得你的命名规则不对,
类一般首字母要大写(你小写当然也可以)
如你可以定义SqlBean

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • centOS 5.5 宽带连接的问题,很小白,诚心求教
  • 一个链接错误,实在搞不定,诚心求教
  • 诚心求教:这样能实现吗?
  • 请做网管的哥哥姐姐们看过来,小弟诚心请较怎样做名合格的网管,分数管够.........
  • 100分+一颗诚心 期待netfilter Hook程序解惑 每天都在线,期待交流
  • 关于数字签名的几点疑问??另:csdn的数字签名帖子我都看过,不要介绍给我,我是诚心提问!!
  • 新手诚心求教linux安装,高手进!分不够还可以加。
  • 在线诚心求助 (gtk 问题)
  • 诚心急求LINUX下网络编程的C源码!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3