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的时候应该就了解过了
 

 

 

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

c3p0数据库连接池实例

c3p0下载地址:http://download.csdn.net/detail/huhui_bj/6944595 这篇文章介绍的是,在普通Java Web工程中或者普通Java工程中使用c3p...
  • csh602583095
  • csh602583095
  • 2014年10月27日 16:25
  • 1178

数据库连接池的作用及c3p0的详解

1.JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤:   在主程序(如servlet、beans)中建立数据库连接。 进行sql操作 ...
  • qq441568267
  • qq441568267
  • 2016年10月28日 00:43
  • 9791

使用spring配置C3P0连接池 并通过手动获取spring的ApplicationContext和bean对象使用库连接。

创建一个javaweb项目引入如下包以及数据库驱动jar包,并创建一个spring-conf.xml配置文件 spring-conf.xml配置如下: ...
  • teshazhuang7308
  • teshazhuang7308
  • 2017年02月18日 23:47
  • 1615

C3P0和dbutils数据库连接池封装的使用(一)

首先用数据库连接池管理Connection,我们就可以重复使用Connection了,有了连接池我们就可以不用自己创建Connection, 然后用完把它归还给连接池就行了,首先用c3p0数据库连接...
  • dream_follower
  • dream_follower
  • 2017年01月06日 15:54
  • 1746

c3p0连接池连接MySql数据库时,无请求自动断开连接的解决方案

作为一个程序员要养成些笔记的习惯,记录自己遇到的一些问题,这样才能一步一步由菜鸟成长为大牛!今天主要讲述项目中使用c3p0连接池遇到的一些问题。1.错误现象描述与错误日志 项目部署好后,我进行插入数...
  • ouyang111222
  • ouyang111222
  • 2015年08月29日 20:57
  • 2856

用C3P0建立服务器与数据库的连接

1:在MyEclipse建立 Web Serve
  • pengkv
  • pengkv
  • 2014年06月13日 09:47
  • 1506

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

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

java Servlet使用c3p0创建多个Mysql数据库连接池,Sevlet使用c3p0创建oracle数据库连接池

java Servlet使用c3p0创建多个Mysql数据库连接池,Sevlet使用c3p0创建oracle数据库连接池...
  • weixin_36751895
  • weixin_36751895
  • 2017年04月24日 14:54
  • 861

在spring框架中的applicationContext.xml文件配置c3p0数据源

这个是我以前在网上看到过的一个例子,
  • u011687037
  • u011687037
  • 2014年07月21日 09:55
  • 1588

生产环境c3p0数据源用户名密码加密或解密

直接上代码,相信大部分人能看懂 Spring applicationContext.xml ...
  • czmchen
  • czmchen
  • 2015年07月16日 16:32
  • 3848
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java使用c3p0连接数据库
举报原因:
原因补充:

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