C3P0数据库连接池连接Mysql8.0.11的配置问题
C3P0连接Mysql8.0.11的配置问题
⼩⽩⼀个,这⼏天,在学C3P0数据连接池,把遇到的⼀些问题记录⼀下,希望能帮到你们。
题主的环境:
1. Eclip
2. C3P0-0.9.5.2
3. Mysql8.0.11
Eclip⽬录结构如下:
1.创建配置⽂件l
在src(类路径)⽬录下添加配置⽂件l
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
//默认的配置
<default-config>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb_02?&uSSL=fal&rverTimezone=UTC</property> <propertyname="driverClass"&sql.cj.jdbc.Driver</property>
<property name="ur">root</property>
<property name="password">123456</property?
<property name="acquireIncrement">3</property>
<property name="initialPoolSize">10</property>
<property name="minPoolSize">2</property>
<property name="maxPoolSize">10</property>
<named-config name="oracle">
</default-config>
</c3p0-config>
请注意,这个配置⽂件可能会出现的错误如下:
[ 1]对实体‘uSSL’ 的引⽤必须以 ‘;’ 分隔符结尾.
-
解决办法:在jdbcUrl中所有带 ‘&’的后⾯加上amp并加上;
如:jdbc:mysql://localhost:3306/数据库名?&uSSL=fal&rverTimezone=UTC
[2 ] not Suitable driver
解决办法:JDBC版本和C3P0版本不兼容,题主开始⽤的mysql8.0.11+c3p0-0.9.1.2报了这个异常,后来去下了c3p0最新版(0.9.5.2)得以解决。
2.⼯具类C3P0Utils
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
hange.v2.c3p0.ComboPooledDataSource;
public class C3P0Utils {
private static ComboPooledDataSource dataSource =new ComboPooledDataSource();
//获得数据源
public static DataSource getDataSource(){
return dataSource;
}
//获得连接对象
public static Connection getConnection(){
try{
Connection();
}catch(SQLException e){
throw new RuntimeException(e);
}
}
//释放资源
public static void relea(Connection con, PreparedStatement par, ResultSet re){
if(re != null){
try{
re.clo();
}catch(SQLException e){
e.printStackTrace();
}
}
if(par != null){
try{
par.clo();
}catch(SQLException e){
e.printStackTrace();
}
}
if(con != null){
try{
con.clo();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
3.测试类TestC3P0
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class TestC3P0 {public static void main(String[] args){ TestAdd();
}
public static void TestAdd(){
Connection con =null;
PreparedStatement ps=null;
try{
Connection();
String sql="inrt into login_inf values(?,?)";
ps=con.prepareStatement(sql);
ps.tString(1,"张飞");
ps.tString(2,"123456");
int row = ps.executeUpdate();
if(row>0){
System.out.println("插⼊成功");
}el{
System.out.println("插⼊失败");
}
}catch(SQLException e){
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
}
}
4.运⾏结果
想想⾃⼰也是够笨的,折腾了3⼩时。。。。