记录关于C3P0和MYSQL5.5/5.7的问题
什么是数据库连接池:
用池来管理Connection,这可以重复使用Connection。有了池,所以我们就不用自己来创建Connection,而是通过池来获取Connection对象。
当使用完Connection后,调用Connection的close()方法也不会真的关闭Connection,而是把Connection“归还”给池。池就可以再利用这个Connection对象了。
之前在学习JDBC的时候没有接触到C3P0,今天刚接触就出现了问题,由于老师上课用的版本是mysql5.5版本,而我本机的mysql是5.7版本,明明c3p0-config.xml配置一样,而我的测试类却获取不到连接,经过一番百度,找出了问题所在,并在此记录。
主要注意以下几个方面:
一、驱动文件
MYSQL5.5使用的驱动文件是 mysql-connector-java-5.1.47.jar
MYSQL5.7使用的驱动文件是 mysql-connector-java-8.0.11.jar
注意在WEB-INF/lib中根据相应的要求进行放置。不要重复放置多种版本,以防冲突。
二、连接方式
MYSQL5.5版本的数据库驱动为com.mysql.jdbc.Driver
MYSQL5.7版本的数据库驱动为com.mysql.cj.jdbc.Driver
c3p0-config.xml基本配置
<!-- 连接mysql数据的基本的信息配置 -->
<property name="driverClass">com.mysql.cj。jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/mvcproject?&useSSL=false&serverTimezone=UTC</property>
<property name="user">root</property>
<property name="password">root</property>
<!-- 若数据库中的连接数量不足的时候,向数据库申请的连接数量 -->
<property name="acquireIncrement">5</property>
<!-- 初始化数据库连接池的数量 -->
<property name="initialPoolSize">10</property>
<!-- 数据库连接池中最小的数据库连接数 -->
<property name="minPoolSize">5</property>
<!-- 数据库连接池中最大的数据库连接数 -->
<property name="maxPoolSize">100</property>
<!-- C3P0数据库连接池可以维护的Statement的数量 -->
<property name="maxStatements">2</property>
<!-- 每个连接同时可以使用的Statement的数量 -->
<property name="maxStatementsPerConnection">5</property>
注意c3p0-config.xml配置里面的字符是&使用的转义字符&emp;不用转义会报错。 当然也可以在jdbc.properties里面进行配置,那么就不需要转义了。
例(未测试):
注:截图来自于http://www.lerx.com/html/g10/2019/01-25/091040003-91.html
目前碰上的就这几个问题,修改好后我可以获取到数据库的连接了。
后续有问题再进行补充!