DBCP和C3P0的使用【详解】

DBCP

  1. 导jar包
  2. 使用DBCP创建数据库连接对象
    DataSource ds=BasicDataSourceFactory.createDatasource("一个存储连接信息的properties集合");
  3. 使用DataSource,调用连接池对象的getConnection方法

 dbcpconfig.properties

  1. #连接设置

  2. driverClassName=com.mysql.jdbc.Driver

  3. url=jdbc:mysql://localhost:3306/demobase

  4. username=root

  5. password=roo

 JDBCUtils中的代码:

到时候我们用这个类就可以很快连接数据库。

public class JDBCUtils {
	
	private static DataSource ds;
	//DatatSource 对象只会创建一个
	static {
		try {
		//创建DBCP的数据库连接对象
		//1、获取配置文件对应的输入流
		InputStream in = JDBCUtils.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");
		//2、将流中数据读入集合
		Properties pro = new Properties();
		pro.load(in);
		ds = BasicDataSourceFactory.createDataSource(pro);
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException();
		}
	}
	
	public static DataSource getDs(){
		return ds;
	}
}

Test中的代码:

public class Test {
	public static void main(String[] args) throws Exception  {
		Connection con = JDBCUtils.getDs().getConnection();
		//使用连接
		PreparedStatement ps = con.prepareStatement("select * from teacher");
		ResultSet rs = ps.executeQuery();
		while(rs.next()){
			System.out.println(rs.getString(1) + "   " + rs.getString(2));
		}
		//关闭
		rs.close();
		ps.close();
		//和以前不同
		con.close();
	}
}

C3P0

C3P0使用流程:

 

  1. 导jar包
  2. 使用C3P0创建对应的数据库连接对称
    DataSource ds=new ComboPooledDataSource();
    注意:
    ·虽然有配置文件,但是配置文件没有字节读取,c3p0会自动读取配置文件,此过程隐藏了;
    ·保存配置文件存在的路径在src中, 其实复制到bin目录下面了,真正读取是从bin目录下查找的;
    ·配置文件的文件名必须固定,即 c3p0-config.xml;
  3. 具体的连接对象使用与DBCP一样
  4. 无需读取配置文件,自动读取。

 编写的XML文件:c3p0-config.xml

<?xml version="1.0" encoding="utf-8"?>
<c3p0-config>
  <default-config>
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql:///estore</property>
    <property name="user">root</property>
    <property name="password">root</property>
  </default-config>
</c3p0-config>
	

JDBCutils代码:

public class DaoUtils {
	private static DataSource source = new ComboPooledDataSource();
	private DaoUtils() {
	}
	
	public static DataSource getSource(){
		return source;
	}
	
	public static Connection getConn(){
		try {
			return source.getConnection();
		} catch (SQLException e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		}
	}
}

Test中的代码:


public class Test {
	public static void main(String[] args) throws Exception {
		Connection con = JDBCUtils.ds().getConnection();
		//使用连接
		PreparedStatement ps = con.prepareStatement("select * from teacher");
		ResultSet rs = ps.executeQuery();
		while(rs.next()){
			System.out.println(rs.getString(1) + "   " + rs.getString(2));
		}
		//关闭
		rs.close();
		ps.close();
		//和以前不同
		con.close();
	}
}

总结下感悟:1.DBCP中,是需要读取文件的,而且读取的方式和工厂类读取文件很像。只不过一个用的reader一个是steram。

2.两种都有特殊获取数据库连接的方法BasicDataSourceFactory.createDataSource(pro);和new ComboPooledDataSource();

3.C3p0居然不需要读取配置文件简直就是残暴

4.dbcp是properties格式文件,c3p0是xml格式。感觉c3p0简单点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值