`
lixinye0123
  • 浏览: 336003 次
  • 性别: Icon_minigender_1
  • 来自: 温州
社区版块
存档分类
最新评论

java dbcp连接池!

    博客分类:
  • Java
阅读更多
import java.sql.*;

import org.apache.commons.pool.ObjectPool;
import org.apache.commons.pool.impl.GenericObjectPool;
import org.apache.commons.dbcp.ConnectionFactory;
import org.apache.commons.dbcp.PoolingDriver;
import org.apache.commons.dbcp.PoolableConnectionFactory;
import org.apache.commons.dbcp.DriverManagerConnectionFactory;

public class DBConn {

    private Connection conn = null;
    private Statement stmt = null;
    private static String sqlJdbc = "";
    private static String sqlUser = "";
    private static String sqlPwd = "";
    private static Class driverClass=null;
    private static ObjectPool connectionPool=null;

    public DBConn() {
        if("".equals(sqlJdbc)){
          sqlJdbc = ConfigFile.SQL_JDBC;
        }
        if("".equals(sqlUser)){
          sqlUser = ConfigFile.SQL_USER;
        }
        if("".equals(sqlPwd)){
          sqlPwd = ConfigFile.SQL_PWD;
        }
        initDataSource();
    }
   
    public synchronized static void initDataSource(){
       if(driverClass==null){
       try {
           driverClass=Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
         } catch (ClassNotFoundException e) {
             e.printStackTrace();
         }
       }

       if(connectionPool==null){
        try {
            setupDriver(sqlJdbc);
        } catch (Exception e) {
            e.printStackTrace();
        }
       }

        // Display some pool statistics
        try {
            printDriverStats();
        } catch (Exception e) {
            e.printStackTrace();
        }    
    }
   
   
    //获取一个连接
    private Connection getDbPollConnection(){
        try {
            conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:auxdbpoll");
        } catch(SQLException e) {
            e.printStackTrace();
        }
        return conn;
     }
   
    // 获得记录集
     public ResultSet executeQuery(String SQL) {
           try {
               stmt=getDbPollConnection().createStatement();
              ResultSet rs = stmt.executeQuery(SQL);
              return rs;
           } catch (Exception e) {
               e.printStackTrace();
               return null;
           }
       }
     
     // 执行SQL
     public boolean execute(String SQL) {
         try {
             stmt=getDbPollConnection().createStatement();
             stmt.execute(SQL);
             return true;
         } catch (Exception e) {
             e.printStackTrace();
             return false;
         }finally{
           close();  
         }
     }
 
     // 执行SQL  
     public boolean executeUpdate(String SQL) {
         try {
             stmt=getDbPollConnection().createStatement();
             stmt.executeUpdate(SQL);
             return true;
         } catch (Exception e) {
             e.printStackTrace();
             return false;
         }finally{
           close();  
         }
     }
     
     public void close(){
        if(stmt!=null){
         try{
              stmt.close();
              stmt=null;
         }catch(Exception e){
               System.out.println(e);    
         }
        }
        if(conn!=null){
           try{
             conn.close();
             conn=null;
           }catch(Exception e){
             System.out.println(e);  
           }  
        }
     }
   
    public static void printDriverStats() throws Exception {
        PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");
        ObjectPool connectionPool = driver.getConnectionPool("auxdbpoll");
        System.out.println("活动的连接: " + connectionPool.getNumActive());
        System.out.println("空闲的连接: " + connectionPool.getNumIdle());
    }
   
    public static void shutdownDriver() throws Exception {
        PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");
        driver.closePool("auxdbpoll");
    }
   
    public static void setupDriver(String connectURI) throws Exception {
     System.out.println(connectURI);
        connectionPool = new GenericObjectPool(null);
        ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(connectURI,sqlUser,sqlPwd);
        PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory,connectionPool,null,null,false,true);
        Class.forName("org.apache.commons.dbcp.PoolingDriver");
        PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");
        driver.registerPool("auxdbpoll",connectionPool);
    }
   
    //测试
    public void testQuery(){
     String sql="select * from taccount";
        try {
     ResultSet rs=executeQuery(sql);
     while(rs.next()){
     System.out.println(rs.getString("account"));  
     }
   } catch (SQLException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
   }finally{
     close();  
   }
    }

    public static void main(String[] args){
     DBConn dbConn=new DBConn();
     dbConn.testQuery();
    }
}
分享到:
评论

相关推荐

    java dbcp连接池

    总的来说,Java DBCP连接池是Java应用中管理和优化数据库连接的有效工具,通过合理配置和使用,能够显著提升应用的数据库访问性能,同时降低资源消耗。在实际开发中,开发者应根据项目需求和性能要求选择合适的连接...

    DBCP连接池所有jar包

    配置好这些jar包后,你可以在Java代码或应用服务器的配置文件中设置DBCP连接池的参数,然后在需要的地方通过DataSource对象获取数据库连接。 总的来说,DBCP连接池是Java Web开发中管理数据库连接的重要工具,通过...

    dbcp 连接池 jar包

    总的来说,DBCP连接池是Java应用程序中用于优化数据库连接管理的重要工具,它通过复用连接、自动检测和管理连接状态,提高了系统的并发性能和资源利用率。在Hibernate等ORM框架中,DBCP的使用使得数据库操作更加高效...

    DBCP连接池的jar包

    DBCP连接池的工作原理是预先创建一定数量的数据库连接,将这些连接存储在一个池中,当应用需要连接数据库时,可以从池中获取一个已存在的连接,使用完毕后再归还到池中,而不是每次操作数据库都创建新的连接。...

    DBCP连接池所需jar包.rar

    DBCP(Database Connection ...总的来说,DBCP连接池是Java应用程序中实现数据库连接复用和管理的重要工具,这三个JAR文件构成了其核心功能。开发者可以根据项目需求进行适当的配置和调优,以达到最佳的性能和可靠性。

    java DBCP连接池需要jar

    DBCP(DataBase Connection Pool)数据库连接池,是java数据库连接池的一种,由Apache开发,通过数据库连接池,可以让程序自动管理数据库连接的释放和断开 亲测可用,用于java DBCP的链接必须jar包

    java配置dbcp连接池(数据库连接池)示例分享

    Java配置DBCP连接池(数据库连接池)示例分享 Java配置DBCP连接池是Java应用程序中常用的数据库连接池实现之一。DBCP(Database Connection Pool)是Apache Commons提供的一种开源的数据库连接池实现,旨在提高Java...

    DBCP连接池jar包

    DBCP(Database Connection Pool)是Apache软件基金会的Commons DBCP项目提供的一个数据库连接池组件,它在Java应用程序中用于管理和复用数据库连接。连接池是提高数据库应用性能的重要手段,通过预先创建并维护一定...

    dbcp连接池jar包

    标题中的“dbcp连接池jar包”指的是用于实现数据库连接池功能的Java库,即Commons DBCP的jar文件。这个jar包包含了DBCP所需的全部类和资源,开发者可以通过引入这个jar包到项目中,快速地集成数据库连接池功能。 ...

    DBCP数据库连接池jar包.zip

    DBCP(Database Connection Pool)是Apache Commons项目中的一个数据库连接池组件,主要目的是为了提高数据库连接的复用性,减少创建和销毁连接的开销,从而提升应用的性能。DBCP2是其第二个主要版本,提供了更稳定...

    dbcp连接池使用例子

    在这个"dbcp连接池使用例子"中,我们将深入理解DBCP的工作原理、配置方法以及如何在实际项目中集成和使用。 DBCP连接池的基本概念: 1. 数据库连接池:在应用程序启动时,预先创建并维护一定数量的数据库连接,这些...

    dbcp连接池jar

    DBCP(Database Connection Pool)是Apache组织提供的一种开源数据库连接池组件,主要...总的来说,DBCP连接池是Java应用程序中用于高效管理数据库连接的重要工具,通过合理的配置和使用,可以显著提升系统运行效率。

    mysql8 DBCP连接池jar依赖

    用于实现DBCP连接池所用的JAR依赖文件,包括数据库驱动及创建连接池所需的其他依赖: * commons-collections  * commons-dbcp2  * commons-logging  * commons-pool2  * mysql-connector

    dbcp连接池和配置文件

    **DBCP连接池的工作原理:** 1. **初始化**:在应用程序启动时,DBCP会预先创建一定数量的数据库连接并放入连接池。 2. **请求连接**:当程序需要与数据库交互时,它向连接池请求一个连接。连接池检查是否有空闲的...

    dbcp连接池常用包

    总的来说,DBCP连接池是Java开发中一个重要的组件,理解和掌握其使用方法对于优化数据库操作、提高系统性能至关重要。这个压缩包提供了一个学习和实践DBCP的起点,开发者可以通过研究不同版本的特性,结合实际应用...

    DBCP连接池

    在SSH(Spring、Struts和Hibernate)这样的经典企业级开发框架中,DBCP连接池是一个常用的数据库管理工具。 1. **数据库连接池概念**:数据库连接池是在应用服务器启动时创建的,它会预先建立一定数量的数据库连接...

    dbcp连接池jar,

    DBCP连接池在应用启动时会预先创建一定数量的数据库连接,并将这些连接放入池中。当应用需要与数据库交互时,它从池中获取一个已建立的连接,用完后再归还回池,而不是每次操作都创建新的连接。这种机制可以显著提高...

    dbcp连接池所需包

    在这个场景中,"dbcp连接池所需包"指的是用于配置和使用DBCP连接池的必要Java档案库(JAR包)。 首先,`commons-dbcp.jar`是DBCP的主要实现包,它包含了一系列用于管理和维护数据库连接的类和接口。这个库提供了...

Global site tag (gtag.js) - Google Analytics