C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。
?
?这里不详谈 只做实现 去往官网下载c3p0 jar包:http://www.126disk.com/fileview_1619526.html
?
1、jdbc.properties 配置文件
class="java">#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"));
}
}
?