`
lqi
  • 浏览: 10359 次
社区版块
存档分类
最新评论

配置C3P0连接池

阅读更多

C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目Hibernate,Spring等。

 

 这里不详谈 只做实现 去往官网下载c3p0 jar包:http://www.126disk.com/fileview_1619526.html

 

1、jdbc.properties 配置文件

#JDBC连接驱动
jdbc.driver=com.mysql.jdbc.Driver
#服务器连接地址
jdbc.url=jdbc:mysql://127.0.0.1:3306/data?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8
#用户名
jdbc.username=root
#密码
jdbc.password=123456

#连接池
#初始化连接
jdbc.initialPoolSize=10
# 最大连接
jdbc.maxPoolSize=20
#最小连接
jdbc.minPoolSize=5
#等待时间s
jdbc.maxIdleTime=30000

 

package com.ai.util;

import java.beans.PropertyVetoException;
import java.io.*;
import java.sql.*;
import java.util.Properties;

import org.apache.log4j.Logger;

import com.mchange.v2.c3p0.ComboPooledDataSource;


public class JDBCUtil {
	
	private static Logger log=Logger.getLogger(JDBCUtil.class);
	//使用c3p0 连接池
	private static ComboPooledDataSource ds;
	static {
		
		ds=new ComboPooledDataSource();
		
		//加载驱动
		try {
			ds.setDriverClass(getProperties("jdbc.driver"));
		} catch (PropertyVetoException e) {
			log.error("加载驱动失败",e);
			e.printStackTrace();
		}
		//数据库连接
		ds.setJdbcUrl(getProperties("jdbc.url"));
		//用户
		ds.setUser(getProperties("jdbc.username"));
		//密码
		ds.setPassword(getProperties("jdbc.password"));
		//初始化开几个连接
		ds.setInitialPoolSize(Integer.parseInt(getProperties("jdbc.initialPoolSize")));
		//最大开几个
		ds.setMaxPoolSize(Integer.parseInt(getProperties("jdbc.maxPoolSize")));
		//最小开几个
		ds.setMinPoolSize(Integer.parseInt(getProperties("jdbc.minPoolSize")));
		//设置等待时间
		ds.setMaxIdleTime(Integer.parseInt(getProperties("jdbc.maxIdleTime")));
	}

	
	public final static Connection getConnection(){
		
		try {
			return ds.getConnection();
		} catch (SQLException e) {
			log.error("获取连接失败",e);
			e.printStackTrace();
		}
		return null;
	}
	
	
	//关闭连接
	public final static void closeConntion(ResultSet re,PreparedStatement psnt,Connection conn){
		
		
		if(re!=null)
			try {
				re.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		if(psnt!=null)
			try {
				psnt.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		if(conn!=null)
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	}
	
	
	// 读取连接数据文件
	public final static String getProperties(String name){
		InputStream  str=Thread.currentThread().getContextClassLoader().getResourceAsStream("config/hibernet/jdbc.properties");
		Properties properties=new Properties();
		try {
			properties.load(str);
			return properties.getProperty(name);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			log.error("读取jdbc.properties文件不存在",e);
		} catch (IOException e) {
			e.printStackTrace();
			log.error("读取jdbc.properties文件异常",e);
		}
		return "";
	}
	
	
	
	public static String query(){
		
		
		Connection conn=JDBCUtil.getConnection();
		
		PreparedStatement psnt=null;
		
		ResultSet re=null;
		
		String sql="select * from customerinfo";
		try {
			psnt=conn.prepareStatement(sql);
			
			re=psnt.executeQuery();
			
			if(re.next()){
				return re.getString("customerid");
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			closeConntion(re, psnt, conn);
		}
		return "";
	}
	
	
	public static void main(String[] args) {
		
		System.out.println(JDBCUtil.query());
//		System.out.println(getConnection());
//		System.out.println(getProperties("driver"));
//		System.out.println(getProperties("username"));
//		System.out.println(getProperties("password"));
//		System.out.println(getProperties("url"));
		
	}
}

 

0
0
分享到:
评论
2 楼 cywhoyi 2014-12-19  
string2020 写道
用 连接池 的目的不就是,连接用了,就不用关闭了吗?

怎么撸主这里都关闭了

是啊,是不是写错了,不是close,仅仅是回收而已,null就够了
1 楼 string2020 2014-12-19  
用 连接池 的目的不就是,连接用了,就不用关闭了吗?

怎么撸主这里都关闭了

相关推荐

    Hibernate 中配置C3P0连接池

    配置C3P0连接池主要涉及到以下步骤: **2.1 配置文件** C3P0的配置通常有两种方式,通过`hibernate.properties`或`hibernate.cfg.xml`文件。在`hibernate.properties`中,你需要定义一系列以`hibernate.c3p0.`开头...

    hibernate 配置 C3P0 连接池

    在探讨如何在Hibernate框架中配置C3P0连接池之前,我们先简要了解下Hibernate与C3P0的基本概念。 Hibernate是一个开放源代码的对象关系映射(ORM)框架,它实现了Java对象与数据库表之间的映射,允许开发人员以面向...

    Tomcat统一配置C3P0连接池

    在【标题】"Tomcat统一配置C3P0连接池"中,我们主要探讨的是如何在Apache Tomcat服务器中集中管理数据库连接池,特别是使用C3P0这个开源的JDBC连接池实现。C3P0是一个JDBC连接池,它实现了数据源和JNDI绑定,提供了...

    C3P0连接池配置需要的jar包

    配置C3P0连接池时,开发者通常需要在配置文件(如Hibernate的`hibernate.cfg.xml`或Spring的`applicationContext.xml`)中指定以下参数: - `driver_class`: 数据库驱动类名,例如`com.mysql.jdbc.Driver`。 - `...

    引用外部文件配置C3P0连接池.zip

    下面我们将详细讲解如何引用外部文件配置C3P0连接池。 首先,我们需要了解C3P0的基本配置参数。C3P0提供了许多可调整的参数,如最小连接数、最大连接数、获取连接的最大等待时间等。这些参数可以配置在属性文件中,...

    c3p0连接池工具

    在Java代码中配置c3p0连接池: ```java ComboPooledDataSource cpds = new ComboPooledDataSource(); cpds.setDriverClass("com.mysql.jdbc.Driver"); cpds.setJdbcUrl("jdbc:mysql://localhost:3306/mydb"); ...

    配置C3P0连接池.zip

    使用spring管理的方式,用XML文件配置C3P0连接池。本博客https://blog.csdn.net/qq_40634846有从零基础入门的Spring,有兴趣的小伙伴可关注本博客。希望对大家有帮助

    c3p0连接池

    在实际使用中,我们需要配置C3P0连接池,这可以通过`C3P0连接池配置.txt`文件完成。配置项通常包括: - `minPoolSize`:最小连接数,启动时创建的连接数。 - `maxPoolSize`:最大连接数,超过这个数,应用将无法...

    spring + c3p0 连接池

    **三、配置C3P0连接池** 在Spring项目中使用C3P0,首先需要在项目的`pom.xml`文件中添加C3P0的依赖: ```xml <groupId>com.mchange</groupId> <artifactId>c3p0 <version>0.9.5.5 ``` 然后,在Spring的配置...

    c3p0连接池参数配置

    在配置C3P0连接池时,合理设置参数对于优化数据库访问性能至关重要。 ### 重要参数详解 1. **acquireIncrement**:当连接池中的可用连接数量低于最小阈值时,C3P0会一次性增加此参数指定数量的连接。默认值为3,这...

    c3p0连接池所需要jar包.zip

    配置C3P0连接池时,你需要在项目中创建一个`com.mchange.v2.c3p0.ComboPooledDataSource`实例,并设置相关的属性,例如: ```java import com.mchange.v2.c3p0.ComboPooledDataSource; public class C3P0Config { ...

    c3p0连接池附配置文件

    2. **连接池初始化**:在Java代码中,我们需要通过` ComboPooledDataSource `类加载并配置C3P0连接池,如下所示: ```java ComboPooledDataSource cpds = new ComboPooledDataSource(); cpds.setDriverClass(...

    C3P0连接池配置

    配置C3P0可以通过Java代码或XML配置文件完成。以下是一个简单的XML配置示例: ```xml <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <!-- 其他配置参数 --> ``` 在...

    c3p0连接池jar包

    C3P0连接池是Java开发中常用的数据库连接...总之,C3P0连接池在Java应用中扮演着重要角色,合理配置和使用它可以显著提升数据库操作的效率和系统的稳定性。开发者需要根据实际需求,选择合适的连接池并进行适当的优化。

    C3p0连接池的两个配套jar包.rar_C3P0_C3p0连接池的两个配套jar包

    配置C3p0连接池时,开发者通常会在应用的配置文件(如`persistence.xml`或`application.properties`)中设置以下关键参数: - `initialPoolSize`: 初始化时连接池中的连接数。 - `minPoolSize`: 连接池最小保持的...

    c3p0连接池以及配置文件

    在配置C3P0时,通常会有一个名为`c3p0-config.xml`的配置文件,以下是一些常见的配置参数: - `minPoolSize`:初始化连接数,系统启动时创建的最小连接数。 - `maxPoolSize`:最大连接数,池中允许的最大连接数。 -...

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

    2. **配置C3P0**:在配置文件(如`c3p0.properties`或应用配置文件)中设置连接池的相关参数,如数据库驱动、URL、用户名、密码以及连接池的初始化大小、最大大小等。 3. **初始化C3P0**:在代码中创建` ...

    c3p0连接池配置使用

    配置c3p0属性 c3p0的配置主要通过一个配置文件(如c3p0-config.xml)或直接在代码中设置。以下是一些常用的关键配置项: - `driverClass`:指定数据库驱动类,如`com.mysql.jdbc.Driver`。 - `jdbcUrl`:数据库...

Global site tag (gtag.js) - Google Analytics