问题:c3p0数据库连接池的jar包版本问题
刚开始学习连接池,对着课本上的例子写出代码,如果运行出现异常或者出现错误,就按照我步骤测试下!
首先查看自己mysql的版本
网上的视频,大部分都是mysql5.0版本,而我们下载的mysql有些却是8.0.x的版本,本文只针对mysql8.0.x的版本,mysql5.0.x的版本可以参考
平台:eclipse mysql8.0.11
首先在项目的webcontent->web-inf->lib包中导入这三个jar包这些都可以在官网下载的
注意下载的 c3p0 jar包要与mchange-commons-java jar包和mysql-connector-java 驱动jar包以及你的mysql版本一致,不一致会报错,我这几个jar包是可以参考的.
然后再src文件下创建一个c3p0-config.xml文件
c3p0-config.xml:
<c3p0-config>
<!-- 使用默认的配置读取连接池对象 -->
<default-config>
<!-- 连接参数 -->
<property name="driverClass">com.mysql.cj.jdbc.Driver</property><!-- 这是你的数据库驱动 -->
<!-- 这是你的数据库,当然如果是本地连接也可把localhost:3303给删掉 -->
<property name="jdbcUrl">jdbc:mysql://localhost:3306/mysql?useSSL=false&serverTimezone=UTC</property>
<!-- 这是你的数据库账号 密码 -->
<property name="user">root</property>
<property name="password"></property>
<!-- 连接池参数 -->
<property name="initialPoolSize">5</property><!-- 初始化连接数 -->
<property name="maxPoolSize">10</property><!-- 最大连接数 -->
<property name="checkoutTimeout">3000</property><!--超时时间 -->
</default-config>
<!-- 这是自定义的配置,如果想用这个配置 创建的时候这样写就好了 javax.sql.DataSource com = new ComboPooledDataSource("outerc3p0");-->
<!-- 这属性同上 -->
<named-config name="otherc3p0">
<!-- 连接参数 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/mysql</property>
<property name="user">root</property>
<property name="password"></property>
<!-- 连接池参数 -->
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">8</property>
<property name="checkoutTimeout">1000</property>
</named-config>
</c3p0-config>
这里要注意的是:在此处要注意版本的不同的差异,如果时mysql 5.x 则在配置文件中
写 <property name="jdbcUrl">jdbc:mysql://localhost:3306/mysql?useSSL=false</property>
如果是mysql 8.0版本之后,<property name="jdbcUrl">jdbc:mysql://localhost:3306/mysql?useSSL=false&serverTimezon</property>
当然注册驱动的时候也要注意mysql5.x之前
注册驱动:com.mysql.jdbc.Driver
mysql8.x之后就为:com.mysql.cj.jdbc.Driver
完成以上操作就可以来测试啦:
创建一个c3p0Dem01类:
package cn.itcast.c3p0;
import java.sql.Connection;
import java.sql.SQLException;
import org.apache.tomcat.jdbc.pool.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class c3p0Demo01 {
public static void main(String[] args) throws SQLException {
//创建数据库连接池对象
javax.sql.DataSource com = new ComboPooledDataSource();
//获取连接对象
Connection conn = com.getConnection();
System.out.println(conn);
}
}
运行一下:
红色的为一些日志,现在不用管,可以看到连接的对象被打印出来了
原因分析:
原因:版本问题 mysql 8.x的版本必须要与mysql8.x的驱动jar包给对应
并且很重要的一点就是mysql8.0.x版本的驱动jar包必须要与jdk1.8及以上版本匹配才可以使用
这样在以后用c3p0连接池的时候就不会出现软件问题了~
我也是刚开始学习数据库连接池,遇到了这些问题,在网上查了一堆资料,找到的解决方法.如果有些不完善的地方,多多包涵~~
帮你解决了问题的话,点个赞吧!谢谢啦