1.配置方式
c3p0的三种配置方式:
- setters一个个地设置各个配置项
- 类路径下提供一个c3p0.properties文件
- 类路径下提供一个c3p0-config.xml文件
注意:编写配置文件,要求有固定的格式和固定的名字(c3p0-config.xml和c3p0.properties)该配置文件要放到项目的src目录下
三中配置的优先级为:setters>c3p0-config.xml>c3p0.properties
优先级的验证:
情况一:
无论如何配置c3p0-config.xml 与c3p0.properties ,只要在代码中重新设置,都会显示最终的set设置的信息
情况二:
屏蔽set 设置的信息,如下分别为c3p0-config.xml 与c3p0.properties 的配置信息,当文件都按照要求配置命名时最终输出的是c3p0-config.xml的配置信息。
最终输出的信息为c3p0-config.xml中的配置信息
情况三:将为c3p0-config.xml 改名, 改名后输出的是c3p0.properties中的配置信息
2.连接实现
下面通过c3p0.properties 来实现,c3p0会自动去获取并读取配置文件信息(前提是按照规范编写放置配置文件)
修改配置(根据自己环境自行修改)
说明使用前先导入c3p0对应的jar包
JDBCUtils在之前的文章中已经写过,这里不再写出, 可以查看https://blog.csdn.net/qq_32224047/article/details/106750457
import cn.tedu.utils.JDBCUtils;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLDecoder;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;
public class C3p0Demo1 {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
//创建连接池
ComboPooledDataSource pool = new ComboPooledDataSource();
//设置连接池的最大连接数maxPoolSize
//pool.setMaxPoolSize(16);
//pool.setPassword("1234");
//pool.setJdbcUrl("jdbc:mysql:///mydb3");
//System.out.println(pool.getJdbcUrl());
//System.out.println(pool.getMaxPoolSize());
//从连接池获取连接
conn = pool.getConnection();
ps = conn.prepareStatement("select * from stu");
ResultSet resultSet = ps.executeQuery();
while (resultSet.next()){
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("id="+id+"|name="+name);
}
/* conn = pool.getConnection();
ps = conn.prepareStatement("delete from exam where id=?");
ps.setInt(1,4);
ps.executeUpdate();*/
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtils.close(conn,ps,rs);
}
}
}
运行输出结果,对比数据,查询数据正确