c3p0数据库连接池的使用

c3p0的官网:c3p0 - JDBC3
c3p0数据库连接池有两种方法

导入jar包

首先两种方法都需要导入jar包
在这里插入图片描述
图中打钩的,第一个是c3p0的包,第二个是连接数据库的

  1. 在WEB-INF下新建lib包,将所需要的jar导入
    在这里插入图片描述
  2. 右键添加到库
    在这里插入图片描述
    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));
        }
    }
}

第二种:配置文件

很多人都是推荐这种方式,但是博主按照大佬们的来还是报很多错,只能先用第一种方式,配置文件的方式先记录下来

  1. 新建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&amp;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
在这里插入图片描述
哪天我找到解决方法了,再来更新吧。

更多推荐