c3p0数据库连接池的jar包版本问题,软件问题

x33g5p2x  于2021-11-22 转载在 其他  
字(2.9k)|赞(0)|评价(0)|浏览(372)

问题: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&amp;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连接池的时候就不会出现软件问题了~

我也是刚开始学习数据库连接池,遇到了这些问题,在网上查了一堆资料,找到的解决方法.如果有些不完善的地方,多多包涵~~

帮你解决了问题的话,点个赞吧!谢谢啦

相关文章