java使用c3p0连接数据库

原创 2013年12月03日 16:07:42

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

c3p0与dbcp区别
 
dbcp没有自动回收空闲连接的功能
 
c3p0有自动回收空闲连接功能
 
使用c3p0连接数据库步骤
1、创建一个Java项目,导入c3p0-0.9.1.jar包
这个包可以到网上去下载,如果使用过Hibernate框架,就肯定知道这个包,这个包在Hibernte框架中就存在的
2、创建一个工具类,当然这个工具类因个人喜好,建与不建随自己,为了方便管理,建议还是创建好些
 
接下来就直接进入代码
第一步就操作了,对有基础的来说不是什么难事
创建一个DbUtil工具类
package com.tenghu.combo.util;

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

import com.mchange.v2.c3p0.ComboPooledDataSource;

/**
 * 数据库连接工具类
 * @author xiaohu
 *
 */
public class DbUtil {
	//数据库连接
	private static String url="jdbc:mysql://localhost:3306/work";
	//数据库驱动
	private static String driver="com.mysql.jdbc.Driver";
	//数据库用户名
	private static String username="root";
	//密码
	private static String password="xiaohu";
	private ComboPooledDataSource cpds;
	private static DbUtil db=new DbUtil();
	public static DbUtil getInstance(){
		return db;
	}
	private DbUtil(){
		cpds=new ComboPooledDataSource();
		try{
			//设置驱动类
			cpds.setDriverClass(driver);
			//设置连接
			cpds.setJdbcUrl(url);
			//设置用户名
			cpds.setUser(username);
			//设置密码
			cpds.setPassword(password);
			//设置最小连接池个数
			cpds.setMinPoolSize(5);
			cpds.setAcquireIncrement(5);
			cpds.setMaxPoolSize(30);
			cpds.setMaxIdleTime(60);
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	//获取连接对象
	public Connection getConn(){
		try{
			return cpds.getConnection();
		}catch(Exception e){
			e.printStackTrace();
		}
		return null;
	}
	//获取Statement对象
	public Statement getStatement(Connection conn){
		try {
			return conn.createStatement();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
	//获取PreparedStatement对象
	public PreparedStatement getPreparedStatement(Connection conn,String sql){
		try {
			return conn.prepareStatement(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
	//获取结果集
	public ResultSet getResult(Statement st,String sql){
		try {
			return st.executeQuery(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
	public ResultSet getResult(PreparedStatement ps){
		try {
			return ps.executeQuery();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
	//关闭对象
	public void closeObject(Connection conn,Statement st,ResultSet rs){
		try {
			if(null!=rs)
				rs.close();
			if(null!=st)
				st.close();
			if(null!=conn)
				conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			rs=null;
			st=null;
			conn=null;
		}
	}
	//关闭对象
	public void closeObject(Connection conn,PreparedStatement ps,ResultSet rs){
		try {
			if(null!=rs)
				rs.close();
			if(null!=ps)
				ps.close();
			if(null!=conn)
				conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			rs=null;
			ps=null;
			conn=null;
		}
	}
}

在这个工具类我使用了Statement与PreparedStatement两个接口,为了以后方便使用,两个都用上,以后需要用那一个则调用那一个
至于这两个接口的区别,就不多说了,在学习JDBC的时候应该就了解过了
 

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

java 数据库常用连接池框架使用 C3P0、proxool

网页程序肯定用到数据库,而数据库连接数据量大时肯定创建连接/断开连接要消耗不少系统资源,故一个数据库的连接池很重要。 以.NET里的ado.net框架内置的连接池为例,当第一次连接某个数据库时,以连...

java 数据库连接池 c3p0 使用及参数详解,支持重连

//数据库连接池  单例模式 import java.sql.Connection; import java.sql.SQLException; import com.mchange.v...
  • Orehs
  • Orehs
  • 2013-10-15 17:49
  • 970

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Java中读取配置文件使用jdbc-c3p0连接池连接sqlserver数据库

依赖的jar包有c3p0-0.9.2-pre1.jar mchange-commons-0.2.jar ...

Java使用c3p0建立MySQL数据库连接池

序言  数据库连接的设计上有三种思路,第一是对于每一个用户都创建一个连接,等到该用户访问完就将数据库连接释放。第二种是设置一个静态连接变量,所有用户都使用该连接。第三种就是使用数据库连接池。 ...

java开源数据库连接池C3P0配置详解

3    30    1000    false    属性preferredTestQuery将被忽略。你不能在这张Test表上进行任何操作,它将只供c3p0测试 ...

记性不如烂笔头22-JAVA数据库连接池 C3P0

C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。C3P0数据源在项目开发中使用得比...
  • ffm83
  • ffm83
  • 2015-02-03 17:21
  • 917

Java数据库连接池2——c3p0

Java数据库连接池2——c3p0主要内容1、用纯Java方式获取连接池 2、从配置文件中拿连接池 3、自己做一个c3p0的Utils,用于包装一个ThreadLocal 附录:所有要用到...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)