前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C3P0数据库连接池连接Mysql8.0.11的配置问题

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

作者头像
全栈程序员站长
发布2022-08-19 20:25:38
1.3K0
发布2022-08-19 20:25:38
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

C3P0连接Mysql8.0.11的配置问题

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

题主的环境:

  1. Eclipse
  2. C3P0-0.9.5.2 可参考这里下载
  3. Mysql8.0.11

Eclipse目录结构如下:

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

代码语言:javascript
复制
在src(类路径)目录下添加配置文件c3p0-config.xml
代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" ?>
<c3p0-config>
//默认的配置
      <default-config>
         <property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb_02?&amp;useSSL=false&amp;serverTimezone=UTC</property>
         <propertyname="driverClass">com.mysql.cj.jdbc.Driver</property>
         <property name="user">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]对实体‘useSSL’ 的引用必须以 ‘;’ 分隔符结尾.

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

  • [2 ] not Suitable driver

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

2.工具类C3P0Utils

代码语言:javascript
复制
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

代码语言:javascript
复制
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小时。。。。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/136412.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月4,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • C3P0连接Mysql8.0.11的配置问题
  • 1.创建配置文件c3p0-config.xml
  • 2.工具类C3P0Utils
  • 3.测试类TestC3P0
  • 4.运行结果
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档