c3p0数据库连接池的使用
c3p0的官网:c3p0 - JDBC3
c3p0数据库连接池有两种方法
导入jar包
首先两种方法都需要导入jar包
图中打钩的,第一个是c3p0的包,第二个是连接数据库的
- 在WEB-INF下新建lib包,将所需要的jar导入
- 右键添加到库
ps:博主自己新建的某一个工程不知道哪里出错了,包目录变成黄色的,没有添加到库这个选项
所以需要手动添加,过程如下
打开项目结构
选中Libraries,点击 + + +号添加,选择java
找到需要的jar包所在的位置,选中点击OK
第一种:编码方式
第一种是使用编码方式实现c3p0数据库连接池,练习学习使用的方式,一般的工程中都是使用第二种。
按照注释的来写就行了
package learnSomthing;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.MapHandler;
import javax.sql.DataSource;
import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Map;
public class Test {
public static void main(String[] args) throws SQLException, PropertyVetoException {
ComboPooledDataSource ds = new ComboPooledDataSource();//创建使用出c3p0的数据源
ds.setJdbcUrl("jdbc:mysql:///cakeshop");//设置url,数据库名要用自己的,我的是cakeshop
ds.setDriverClass("com.mysql.jdbc.Driver");//设置驱动
ds.setUser("root");//mysql的账号
ds.setPassword("root");//mysql的密码
QueryRunner r = new QueryRunner(ds);
String sql = "select * from goods where id = ?";
Map<String , Object> map = r.query(sql, new MapHandler(), 3);
for(String key :map.keySet()){
System.out.println(key + ":" + map.get(key));
}
}
}
第二种:配置文件
很多人都是推荐这种方式,但是博主按照大佬们的来还是报很多错,只能先用第一种方式,配置文件的方式先记录下来
- 新建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://localhost:3306/cakeshop?useSSL=true&characterEncoding=UTF-8</property>
<property name="user">root</property>
<property name="password">root</property>
<property name="checkoutTimeout">30000</property>
<property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="maxPoolSize">100</property>
<property name="minPoolSize">10</property>
</default-config>
</c3p0-config>
又一个小插曲,博主的工程没有新建xml的选项,但是有大佬的教程idea如何创建XML文件,我也不知道是不是这样
测试一下
package test;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import javax.sql.DataSource;
import java.sql.SQLException;
public class Test {
static DataSource dataSource;
public static DataSource getDataSource(){
dataSource = new ComboPooledDataSource();
return dataSource;
}
public static void main(String[] args) throws SQLException {
System.out.println(getDataSource().getConnection());
}
}
如果你可以的话就能正常使用了,如果不行的话,说不定就和博主一样是这样,报错
∗
n
*n
∗n
哪天我找到解决方法了,再来更新吧。