C3P0数据库连接池连接Mysql8.0.11的配置问题

C3P0数据库连接池连接Mysql8.0.11的配置问题C3P0 连接 Mysql8 0 11 的配置问题 小白一个 这几天 在学 C3P0 数据连接池 把遇到的一些问题记录一下 希望能帮到你们 题主的环境 Eclipse C3P0 0 9 5 2 可参考这里下载 Mysql8 0 11 Eclipse 目录结构如下 1 创建配置文件 c3p0 config xml 在 src 类路径 目录下添加配置文件 c3p0 config xml

C3P0连接Mysql8.0.11的配置问题

小白一个,这几天,在学C3P0数据连接池,把遇到的一些问题记录一下,希望能帮到你们。

题主的环境:

Eclipse

C3P0-0.9.5.2 可参考这里下载

Mysql8.0.11

Eclipse目录结构如下:

1.创建配置文件c3p0-config.xml

在src(类路径)目录下添加配置文件c3p0-config.xml


//默认的配置

jdbc:mysql://localhost:3306/mydb_02?&useSSL=false&serverTimezone=UTC
com.mysql.cj.jdbc.Driver
root
123456 3
10
2
10


请注意,这个配置文件可能会出现的错误如下:

[ 1]对实体‘useSSL’ 的引用必须以 ‘;’ 分隔符结尾.


解决办法:在jdbcUrl中所有带 ‘&’的后面加上amp并加上;
如:jdbc:mysql://localhost:3306/数据库名?&useSSL=false&serverTimezone=UTC

[2 ] not Suitable driver

解决办法:JDBC版本和C3P0版本不兼容,题主开始用的mysql8.0.11+c3p0-0.9.1.2报了这个异常,后来去下了c3p0最新版(0.9.5.2)得以解决。

2.工具类C3P0Utils

package cn.lds.C3P0;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;

public class C3P0Utils {

private static ComboPooledDataSource dataSource = new ComboPooledDataSource();
//获得数据源
public static DataSource getDataSource() {

return dataSource;
}
//获得连接对象
public static Connection getConnection() {

try {

return dataSource.getConnection();
} catch (SQLException e) {

throw new RuntimeException(e);
}
}
//释放资源
public static void release(Connection con, PreparedStatement par, ResultSet re) {

if (re != null) {

try {

re.close();
} catch (SQLException e) {

e.printStackTrace();
}
}
if (par != null) {

try {

par.close();
} catch (SQLException e) {

e.printStackTrace();
}
}
if (con != null) {

try {

con.close();
} catch (SQLException e) {

e.printStackTrace();
}
}

}
}

3.测试类TestC3P0

package cn.lds.C3P0;

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 {

con=C3P0Utils.getConnection();
String sql="insert into login_inf values(?,?)";
ps=con.prepareStatement(sql);

ps.setString(1, "张飞");
ps.setString(2, "123456");
int row = ps.executeUpdate();
if(row>0) {

System.out.println("插入成功");

}else {

System.out.println("插入失败");
}

} catch (SQLException e) {

// TODO Auto-generated catch block
e.printStackTrace();
}finally{

C3P0Utils.release(con, ps, null);
}
}

4.运行结果


想想自己也是够笨的,折腾了3小时。。。。

编程小号
上一篇 2025-03-12 15:40
下一篇 2025-03-20 12:51

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/142399.html