c3p0数据连接池
利用c3p0数据连接池连接数据库
- 准备
jdbc的驱动程序jar包 mysql-connector-java-8.0.20.jar
c3p0 jar包 c3p0-0.9.5.5.jar 和 mchange-commons-java-0.2.19.jar
- 开始
写一个用于测试c3p0的测试类
a.创建数据池
部分代码如下:
public static DataSource ds=null; //设置一个DataSource类型的变量
static {
//DataSource接口的实现类ComboPooledDataSource
ComboPooledDataSource cpds=new ComboPooledDataSource();
ds=cpds;
}
数据库连接池对象创建好了,接下来就是配置下连接池的参数
目前掌握的配置参数方法,以下为简单的配置下了,参考ComboPooledDataSource类的方法
方式一:可以用ComboPooledDataSource类的方法进行配置
//加载驱动程序
cpds.setDriverClass("com.mysql.cj.jdbc.Driver");
//数据库的连接url,8.0.20版本需要设置下时间serverTimezone=UTC
cpds.setJdbcUrl("jdbc:mysql://localhost:3306/sls?serverTimezone=UTC");
//数据库用户
cpds.setUser("root");
//数据库密码
cpds.setPassword("root");
...
方式二:可以将配置参数写到xml文件
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config> <!--默认配置-->
<!--以下name的值和ComboPooledDataSource类的配置方法相同-->
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/dtdserverTimezone=UTC
</property>
<property name="user">root</property>
<property name="password">root</property>
...
</default-config>
<named-config name="..."><!--指定名称配置-->
...
</named-config>
</c3p0-config>
配置完成后,ds就可以引用了ComboPooledDataSource类的对象
b.得到Connection连接对象
Connection conn=ds.getConnection(); //得到Connection对象
接下来就是对我们的dtd库进行操作
查询测试
String sql="select * from student limit 3";
//得到用执行sql语句的对象
PreparedStatement ps=conn.prepareStatement(sql);
//ResultSet类的变量接受结果
ResultSet rs=ps.executeQuery();
//判断当前元组是否存在
while(rs.next()){
String sname=rs.getString("sname");
System.out.println(sname);
}
c.我的完整代码如下
package com.tan.yu.c3p0;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class MyC3P0 {
public static DataSource ds=null;
static {
ComboPooledDataSource cpds=new ComboPooledDataSource();
ds=cpds;
}
public static void main(String[] args) {
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
conn=ds.getConnection();
String sql="select * from student limit 3";
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
String sname=rs.getString("sname");
System.out.println(sname);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
rs=null;
}
if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
ps=null;
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn=null;
}
}
}
}
仅供参考