`
minghe_zy
  • 浏览: 125898 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

C3P0 JDBC连接池

 
阅读更多

文章来源:http://heisetoufa.iteye.com/blog/227790

 

C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。

C3P0配置:

首先肯定是要下载个包的

c3p0-0.9.1-pre11.bin.zip

解压后把bin下的c3p0-0.9.1-pre11.jar包拷贝到项目下的lib里

接下来新建个连接文件

Java代码 复制代码 收藏代码
  1. package dbc;   
  2.   
  3. import java.beans.PropertyVetoException;   
  4. import java.sql.Connection;   
  5. import java.sql.SQLException;   
  6. import com.mchange.v2.c3p0.ComboPooledDataSource;   
  7.   
  8. public class ConnectionFactory {   
  9.   
  10.     private ConnectionFactory(){   
  11.     }       
  12.   
  13.     private static ComboPooledDataSource ds = null;   
  14.   
  15.     static {   
  16.         try {   
  17.             // Logger log = Logger.getLogger("com.mchange"); // 日志   
  18.               // log.setLevel(Level.WARNING);   
  19.             ds = new ComboPooledDataSource();   
  20.             // 设置JDBC的Driver类   
  21.               ds.setDriverClass("oracle.jdbc.driver.OracleDriver");  // 参数由 Config 类根据配置文件读取   
  22.               // 设置JDBC的URL   
  23.             ds.setJdbcUrl("jdbc:oracle:thin:@192.168.1.134:1521:zhpt");   
  24.             // 设置数据库的登录用户名   
  25.               ds.setUser("scott");   
  26.             // 设置数据库的登录用户密码   
  27.               ds.setPassword("tiger");   
  28.             // 设置连接池的最大连接数   
  29.               ds.setMaxPoolSize(200);   
  30.             // 设置连接池的最小连接数   
  31.               ds.setMinPoolSize(20);   
  32.         } catch (PropertyVetoException e) {   
  33.             e.printStackTrace();   
  34.         }   
  35.     }   
  36.      
  37.     public static synchronized Connection getConnection() {   
  38.         Connection con = null;   
  39.         try {   
  40.             con = ds.getConnection();   
  41.         } catch (SQLException e1) {   
  42.             e1.printStackTrace();   
  43.         }   
  44.         return con;   
  45.     }   
  46.     // C3P0 end   
  47. }  
package dbc;

import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.SQLException;
import com.mchange.v2.c3p0.ComboPooledDataSource;

public class ConnectionFactory {

    private ConnectionFactory(){
    }    

    private static ComboPooledDataSource ds = null;

    static {
        try {
            // Logger log = Logger.getLogger("com.mchange"); // 日志
              // log.setLevel(Level.WARNING);
            ds = new ComboPooledDataSource();
            // 设置JDBC的Driver类
              ds.setDriverClass("oracle.jdbc.driver.OracleDriver");  // 参数由 Config 类根据配置文件读取
              // 设置JDBC的URL
            ds.setJdbcUrl("jdbc:oracle:thin:@192.168.1.134:1521:zhpt");
            // 设置数据库的登录用户名
              ds.setUser("scott");
            // 设置数据库的登录用户密码
              ds.setPassword("tiger");
            // 设置连接池的最大连接数
              ds.setMaxPoolSize(200);
            // 设置连接池的最小连接数
              ds.setMinPoolSize(20);
        } catch (PropertyVetoException e) {
            e.printStackTrace();
        }
    }
  
    public static synchronized Connection getConnection() {
        Connection con = null;
        try {
            con = ds.getConnection();
        } catch (SQLException e1) {
            e1.printStackTrace();
        }
        return con;
    }
    // C3P0 end
}

 再建个文件用来测试

Java代码 复制代码 收藏代码
  1. package dbc;   
  2.   
  3. import java.sql.Connection;   
  4. import java.sql.PreparedStatement;   
  5. import java.sql.ResultSet;   
  6. import java.sql.SQLException;   
  7.   
  8. public class dbctest {   
  9.   public static void main(String[] args) {   
  10.   boolean flag = false;   
  11.   // 在此处成具体的数据库验证   
  12.   
  13.   // 声明一个数据库操作对象   
  14.   PreparedStatement pstmt = null;   
  15.   // 声明一个结果集对象   
  16.   ResultSet rs = null;   
  17.   // 声明一个SQL变量,用于保存SQL语句   
  18.   String sql = null;   
  19.   // DataBaseConnection为具体的数据库连接及关闭操作类   
  20.   Connection con = null;   
  21.   // 连接数据库   
  22.   con = ConnectionFactory.getConnection();   
  23.   
  24.   // 编写SQL语句   
  25.   sql = "SELECT u_name,u_password FROM nwvideo.n_user WHERE u_name=? and u_password=?";   
  26.   try {   
  27.    // 实例化数据库操作对象   
  28.    pstmt = con.prepareStatement(sql);   
  29.   
  30.    System.out.println("操作对象已被实例化");   
  31.   
  32.    // 设置pstmt的内容,是按ID和密码验证   
  33.    pstmt.setString(1"limeng");   
  34.    pstmt.setString(2"limeng");   
  35.   
  36.    System.out.println("获得username,password");   
  37.   
  38.    // 查询记录   
  39.    rs = pstmt.executeQuery();   
  40.    System.out.println("执行查询完毕");   
  41.    // 判断是否有记录   
  42.    if (rs.next()) {   
  43.     // 如果有记录,则执行此段代码   
  44.     // 用户是合法的,可以登陆   
  45.     flag = true;   
  46.   
  47.     System.out.println("用户合法");   
  48.    }   
  49.    // 依次关闭   
  50.   
  51.    rs.close();   
  52.    pstmt.close();   
  53.   
  54.   } catch (Exception e) {   
  55.    System.out.println(e);   
  56.   } finally {   
  57.    // 最后一定要保证数据库已被关闭   
  58.    try {   
  59.     con.close();   
  60.    } catch (SQLException e) {   
  61.     // TODO Auto-generated catch block   
  62.     e.printStackTrace();   
  63.    }   
  64.   }   
  65.  }   
  66. }  
package dbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class dbctest {
  public static void main(String[] args) {
  boolean flag = false;
  // 在此处成具体的数据库验证

  // 声明一个数据库操作对象
  PreparedStatement pstmt = null;
  // 声明一个结果集对象
  ResultSet rs = null;
  // 声明一个SQL变量,用于保存SQL语句
  String sql = null;
  // DataBaseConnection为具体的数据库连接及关闭操作类
  Connection con = null;
  // 连接数据库
  con = ConnectionFactory.getConnection();

  // 编写SQL语句
  sql = "SELECT u_name,u_password FROM nwvideo.n_user WHERE u_name=? and u_password=?";
  try {
   // 实例化数据库操作对象
   pstmt = con.prepareStatement(sql);

   System.out.println("操作对象已被实例化");

   // 设置pstmt的内容,是按ID和密码验证
   pstmt.setString(1, "limeng");
   pstmt.setString(2, "limeng");

   System.out.println("获得username,password");

   // 查询记录
   rs = pstmt.executeQuery();
   System.out.println("执行查询完毕");
   // 判断是否有记录
   if (rs.next()) {
    // 如果有记录,则执行此段代码
    // 用户是合法的,可以登陆
    flag = true;

    System.out.println("用户合法");
   }
   // 依次关闭

   rs.close();
   pstmt.close();

  } catch (Exception e) {
   System.out.println(e);
  } finally {
   // 最后一定要保证数据库已被关闭
   try {
    con.close();
   } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
 }
}

 这样就这个C3P0,开源java连接池就配置成功了

 

使用代码里的主要代码就是这句

con = ConnectionFactory.getConnection();

用完记得关闭

分享到:
评论
1 楼 IT_LDB 2014-07-24  
     完美地解决了我一个问题. 3q.

相关推荐

    C3P0连接池配置需要的jar包

    C3P0连接池是Java应用中常用的数据库连接池组件,它允许程序在不关闭物理连接的情况下,管理和重用数据库连接,从而提高了应用程序的性能和效率。C3P0库依赖于其他几个JAR包来实现其功能,包括`c3p0-0.9.2.1.jar`、`...

    jdbc连接池c3p0工具包

    **jdbc连接池c3p0工具包** 在Java开发中,数据库操作是常见的任务,而JDBC(Java Database Connectivity)是Java与数据库交互的标准接口。然而,直接使用JDBC进行数据库连接可能会导致性能问题,因为每次连接和断开...

    c3p0 优秀的JDBC连接池

    C3P0是一个随Hibernate一同分发的开源的JDBC连接池, 它位于lib目录下。 包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象.

    C3P0数据库连接池

    C3P0数据库连接池和jar包,因为jdbc没有保持连接的能力,一旦超过一定时间没有使用(大约几百毫秒),连接就会被自动释放掉。而每次新建连接都需要140毫秒左右的时间,所以耗费时间比较多。若使用C3P0连接池来池化...

    JDBC + MySQL使用c3p0连接池

    C3P0是一个支持JDBC3规范和JDBC2的标准扩展的连接池组件,它提供了强大的性能和配置选项。C3P0的核心功能包括: 1. **连接管理**:C3P0能创建并维护一个数据库连接池,这些连接可以在多个请求之间复用,从而避免了...

    JDBC连接池使用工具 C3P0 连接池 and druid-1.0.9

    C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。C3P0的主要特点包括: 1. **连接测试**:C3P0提供了多种测试策略,确保获取到的连接是可用的。 2. **连接池初始化和最大...

    c3p0数据库连接池

    c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。c3p0的主要功能是管理数据库连接,通过复用已存在的连接来提高数据库访问效率,减少系统资源消耗,同时提供了一套完善的...

    C3P0开源JDBC连接池

    C3P0是一个广泛使用的开源JDBC连接池,它的全称是CompoSource 3.0,由Miquel Argerich开发并维护。作为数据库连接管理的重要工具,C3P0提供了高效、灵活和可配置的数据库连接管理机制,以优化数据库应用的性能和稳定...

    c3p0连接池jar包

    - C3P0:作为一款开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。 2. **C3P0功能特点**: - 自动管理连接:C3P0可以自动检测并修复失效的数据库连接,防止因长时间未使用的连接...

    C3P0连接池jar包(正式).zip

    C3P0是一个开源的Java数据库连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。在Java应用程序中,数据库连接池扮演着非常重要的角色,它能够有效地管理数据库连接,提高系统性能,减少数据库资源...

    C3P0连接池配置

    C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。C3P0的主要特点是轻量级、高效且稳定,广泛应用于各种Java Web应用中。在本文中,我们将深入探讨C3P0连接池的配置,以便更...

    c3p0连接池插件

    c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。作为一个数据库连接池,c3p0的主要作用在于管理数据库连接,以提高应用程序的性能和效率。在高并发的Web应用中,频繁地...

    C3P0 连接池源码

    比如,C3P0在旧版本的JDBC驱动上表现稳定,但可能在性能上不如新出现的连接池实现。 通过深入学习C3P0的源代码,我们可以更好地理解和定制连接池,解决数据库连接管理中可能出现的问题,提升系统的稳定性和性能。...

    数据库连接池c3p0jar包

    C3P0是由David Syer创建的一个开源的JDBC连接池,它的全称是Composed Connection Pool 2000。C3P0的主要目标是提高数据库连接的效率和稳定性,通过复用已建立的数据库连接,避免频繁地创建和关闭连接,从而降低系统...

    jdbc使用c3p0连接池连接数据库的工具类

    jdbc使用c3p0连接池连接数据库,支持配置多个数据源,有相关的查询测试。

    C3P0连接池管理类

    C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。在Java应用中,尤其是在Web应用中,频繁的数据库连接创建和关闭会消耗大量的系统资源,而通过使用C3P0这样的连接池,可以...

    C3P0数据库连接池jar包(完整版)

    C3P0是由Mithral Software公司开发的,其全称为Comerica Commercial Connection Pool,是一款轻量级、高效且功能丰富的JDBC连接池。在Java应用中,尤其是在Web应用服务器上,使用连接池可以有效地减少数据库资源的...

    c3p0连接池工具

    c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。c3p0的主要功能是管理数据库连接,提高数据库访问效率,避免因为频繁创建和销毁数据库连接而造成大量的系统资源浪费。在高...

Global site tag (gtag.js) - Google Analytics