`
jwen
  • 浏览: 63210 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

dbcp 连接数据库

    博客分类:
  • java
阅读更多
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;
import java.sql.*;

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 = "jdbc:mysql://192.168.1.117:3306/test";
          //sqlserver: jdbc:microsoft:sqlserver://IP;DatabaseName=lordeDAS

          //oracle:    jdbc:oracle:thin:@ip:1521:myordb
        }
        if("".equals(sqlUser)){
          sqlUser = "root";
        }
        if("".equals(sqlPwd)){
          sqlPwd = "";
        }
        initDataSource();
    }
    
    public synchronized static void initDataSource(){
       if(driverClass==null){
       try {
    	   //oracle:    oracle.jdbc.driver.OracleDriver 
            //sqlserver: com.microsoft.jdbc.sqlserver.SQLServerDriver
           driverClass=Class.forName("org.gjt.mm.mysql.Driver");
         } 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 table_user";
        try {
     ResultSet rs=executeQuery(sql);
     while(rs.next()){
     System.out.println(rs.getString("user"));  
     }
   } catch (SQLException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
   }finally{
     close();  
   }
    }

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

相关推荐

    dbcp连接数据库

    **DBCP连接数据库的核心概念:** 1. **连接池**:DBCP连接池的核心思想是复用数据库连接,减少创建和关闭数据库连接的开销。在系统启动时,连接池预先创建一定数量的数据库连接,这些连接在空闲时等待任务,当需要...

    DBCP配置数据库连接池

    DBCP(Database Connection Pool)是Apache软件基金会的Commons项目中的一个组件,它提供了一个数据库连接池服务。数据库连接池在应用服务器启动时创建一定数量的数据库连接,并将这些连接放入池中,当应用程序需要...

    DBCP连接数据库的jar包

    DBCP连接池主要由两个组件组成,它们是`commons-dbcp`和`commons-pool`。`commons-dbcp`包含与数据库交互的核心功能,如创建、管理和维护数据库连接,而`commons-pool`则是一个通用的对象池库,为DBCP提供连接对象的...

    DBCP jar包 连接数据库必须用到的

    使用DBCP连接数据库的基本步骤如下: 1. 添加依赖:将`commons-dbcp.jar`和`commons-pool.jar`添加到项目的类路径中。 2. 创建配置:设置数据库连接池的配置属性,如最大连接数、最小连接数、超时时间等,通常这些...

    利用dbcp实现数据库连接池

    1. **DataSource**:这是JDBC中定义的一个接口,代表了数据源,是连接数据库的工厂。在DBCP中,可以通过配置来创建一个DataSource实例,然后通过它获取到数据库连接。 2. **BasicDataSource**:这是DBCP提供的具体...

    DBCP(数据库连接池)

    DBCP,全称为Jakarta-Commons-DBCP,是一个基于Apache组织开发的开源数据库连接池组件。在Java应用程序中,DBCP可以帮助管理和优化数据库连接,提高应用性能和资源利用率。数据库连接池在多线程环境下尤其重要,因为...

    DBCP数据库连接池

    4. **连接管理**:DBCP连接池会监控连接的状态,如果发现某个连接已经超时或者出现异常,会自动进行回收或重新建立,确保连接池中的连接始终处于可用状态。 5. **配置参数**:DBCP允许开发者通过配置参数来调整连接...

    jdbc与dbcp数据库连接

    总的来说,JDBC是连接数据库的基础,而DBCP则是优化数据库访问的一种手段。结合使用JDBC和DBCP,开发者可以在Java应用中实现高效且易于管理的数据库连接。在实际开发中,理解并掌握这些技术对于构建健壮的数据库应用...

    DBCP数据库连接池jar包.zip

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

    dbcp数据库连接池

    **数据库连接池(DBCP)** 是一个在Java应用程序中管理数据库连接的工具,它能够有效地提高数据库操作的性能和效率。DBCP全称为`Jakarta Commons DBCP`,是Apache软件基金会的一个项目,提供了对数据库连接的池化...

    common-dbcp2数据库连接池参数说明

    ### common-dbcp2数据库连接池参数详解 随着`commons-dbcp2`的版本更新,数据库连接池的配置也有了相应的调整。为了更好地理解和配置这些参数,本文将详细解析`commons-dbcp2`中的一些关键参数及其意义。 #### 1. ...

    dbcp数据库连接池使用jar包

    DBCP(DataBase Connection Pool)是Apache组织开发的一个开源数据库连接池组件,它是Java应用程序中用于高效管理数据库连接的重要工具。数据库连接池的概念是基于资源复用的原理,它避免了频繁地创建和销毁数据库...

    dbcp数据库连接池jar包

    DBCP是基于Apache的Commons Pool对象池设计模式实现的,用于管理和复用数据库连接,减少创建和销毁数据库连接时的开销。 首先,我们需要理解数据库连接池的工作原理。数据库连接池在初始化时会创建一定数量的数据库...

    dbcp建立数据库连接池的功能所需要的两个jar包

    配置DBCP连接池通常包括以下几个步骤: 1. **引入依赖**:将`commons-dbcp-1.2.jar`和`commons-pool.jar`添加到项目类路径中,这通常是通过Maven或Gradle等构建工具完成的。 2. **配置属性**:创建一个配置文件...

    dbcp数据库连接池用到的jar包

    总之,DBCP是一个强大的数据库连接池实现,它通过Apache Commons Collections和Pool库的支持,为Java应用程序提供了高效的数据库连接管理。在Spring框架中整合DBCP,可以简化数据库连接的生命周期管理,提升应用性能...

    DBCP数据库连接池包下载

    DBCP(Database Connection Pool)是Apache软件基金会的一个开源项目,全称为Apache Commons DBCP,它是一个基于Java的数据库连接池实现。在Java应用程序中,DBCP被广泛用于管理数据库连接,以提高性能和资源利用率...

    DBCP配置数据库连接池需要的jar包

    标题中提到的"jar包"是配置DBCP连接池的基础。你需要将`commons-dbcp.jar`和`commons-pool.jar`这两个JAR文件添加到你的项目类路径中。这两个库分别提供了数据库连接池的基本实现和对象池服务。现在在大多数情况下...

    dbcp数据库连接池所需jar包

    数据库连接池(Database Connection Pool,简称 DBCP)是一种在多用户并发环境下高效管理数据库连接的技术。它通过预先创建一定数量的数据库连接并存储在内存池中,供多个应用程序共享,从而避免了频繁地创建和关闭...

    DBCP 数据库连接池JNDI连接 学习笔记

    它通过预创建并管理一定数量的数据库连接,避免了每次连接数据库时的初始化开销,同时也能有效地复用这些连接,从而提高了数据库操作的效率。在Java中,Apache Commons DBCP 是一个常用的开源连接池实现。 这篇...

    DBCP的数据库连接池需要用的包 commons-dbcp commons-pool-current

    总的来说,DBCP和Commons Pool是Java应用中实现数据库连接池的重要工具,它们能够有效地管理数据库连接,提升应用的并发性能和资源利用率。在实际开发中,正确配置和使用这两个组件对于优化数据库操作和提高应用整体...

Global site tag (gtag.js) - Google Analytics