1.方式

一种是使用直接c3p0数据库连接池,一种是使用配置文件将连接信息写在配置文件中。

将连接信息写在配置文件中有很多好处,比如如果想替换一个线上项目的数据库,只要改变配置文件中的链接信息就可以了。再就是一些需要修改的地方,比如想要修改链接池的属性,也只需要修配置文件就可以了,不需要去修改java代码,那样还需要重新编译生成class文件,重新运行一遍。

2.直接使用jar包

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

package com.begin21.w1106.ClassTest.excute;

import java.beans.PropertyVetoException;

import java.sql.Connection;

import java.sql.SQLException;

import com.mchange.v2.c3p0.ComboPooledDataSource;

//数据库连接池

public class ConnectionPool {

private static ComboPooledDataSource comboPooledDataSource;

//初始化连接池

public static final void initDBSource(){

comboPooledDataSource = new ComboPooledDataSource();

try {

comboPooledDataSource.setDriverClass("com.mysql.jdbc.Driver");

} catch (PropertyVetoException e) {

e.printStackTrace();

}

comboPooledDataSource.setJdbcUrl("jdbc:mysql://localhost:3306/gaobo");

comboPooledDataSource.setUser("root");

comboPooledDataSource.setPassword("");

comboPooledDataSource.setMinPoolSize(3); //最小线程数

comboPooledDataSource.setMaxPoolSize(20);//最大线程数

comboPooledDataSource.setInitialPoolSize(5);//初始线程数

comboPooledDataSource.setAcquireIncrement(2);//每次新增线程数

comboPooledDataSource.setMaxIdleTime(5);//线程空闲时间

}

/**

* 从连接池中获取连接

* @return

*/

public static synchronized Connection getConnection() {

Connection conn = null;

try {

conn = comboPooledDataSource.getConnection();

} catch (SQLException e) {

e.printStackTrace();

}

return conn;

}

public static void closeOpenResource(AutoCloseable resource) {

if (null != resource) {

try {

resource.close();

} catch (Exception e) {

e.printStackTrace();

}}}}

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

package com.begin21.w1106.ClassTest.excute;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

public class Main2 {

public static void main(String[] args) {

ConnectionPool.initDBSource();

query();}

private static void query() {

Connection conn = ConnectionPool.getConnection();

PreparedStatement prst = null;

ResultSet rs = null;

String sql = "select * from repo_sto";

try {

prst = conn.prepareStatement(sql);

rs = prst.executeQuery();

while(rs.next()) {

System.out.println(rs.getString(2));}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

ConnectionPool.closeOpenResource(rs);

ConnectionPool.closeOpenResource(prst);

// close不是关闭数据库连接池的连接对象,而是把它放回连接池

ConnectionPool.closeOpenResource(conn);}}}

3.使用配置文件

配置文件 db.properties

package com.begin21.w1106.ClassTest.excute;

import java.beans.PropertyVetoException;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.SQLException;

import java.util.Properties;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class ConnectionPoolProp {

private static ComboPooledDataSource comboPooledDataSource;

public static final void initDBSource() {

Properties properties = new Properties();

try {

File file = new File(ConnectionPoolProp.class.getResource("/").getFile().toString() + "dbs.properties");  //引用配置文件

System.out.println(ConnectionPoolProp.class.getResource("/").getFile());

InputStream inputStream = new FileInputStream(file);

properties.load(inputStream);

} catch (IOException e) {

e.printStackTrace();

}

comboPooledDataSource = new ComboPooledDataSource();

try {

comboPooledDataSource.setDriverClass(properties.getProperty("driver"));

} catch (PropertyVetoException e) {

e.printStackTrace();

}

comboPooledDataSource.setJdbcUrl(properties.getProperty("url"));

comboPooledDataSource.setUser(properties.getProperty("user"));

comboPooledDataSource.setPassword(properties.getProperty("password"));

comboPooledDataSource.setMinPoolSize(Integer.parseInt(properties.getProperty("c3p0.minPoolSize")));

comboPooledDataSource.setMaxPoolSize(Integer.parseInt(properties.getProperty("c3p0.maxPoolSize")));

comboPooledDataSource.setInitialPoolSize(Integer.parseInt(properties.getProperty("c3p0.initPoolSize")));

comboPooledDataSource.setAcquireIncrement(Integer.parseInt(properties.getProperty("c3p0.acquireIncrement")));

comboPooledDataSource.setMaxStatements(Integer.parseInt(properties.getProperty("c3p0.maxStatements").trim()));

comboPooledDataSource.setMaxIdleTime(Integer.parseInt(properties.getProperty("c3p0.maxIdleTime")));

}

public static synchronized Connection getConnection() {

Connection conn = null;

try {

conn = comboPooledDataSource.getConnection();

} catch (SQLException e) {

e.printStackTrace();

}

return conn;

}

public static void closeOpenResource(AutoCloseable resource) {

if (null != resource) {

try {

resource.close();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();}}}}

mysql的连接池配置文件,数据库连接池/配置文件数据库连接池相关推荐

  1. javaweb mysql 连接池 c3p0 配置_JavaWeb基础—数据库连接池DBCP、C3P0

    一.基本概念 数据库连接池负责分配.管理和释放数据库连接 数据库连接池:(池用map来实现居多) 用处:为了可重用(销毁创建麻烦,开销大)(招培训老师的例子) 二.编写实现数据库连接池 池参数: 初识 ...

  2. java连接mysql数据库连接池_java使用原生MySQL实现数据的增删改查以及数据库连接池技术...

    一.工具类及配置文件准备工作 1.1 引入jar包 使用原生MySQL,只需要用到MySQL连接的jar包,maven引用方式如下: mysql mysql-connector-java 5.1.48 ...

  3. mysql连接池_数据库技术:数据库连接池,Commons DbUtils,批处理,元数据

    Database Connection Pool Introduction to Database Connection Pool 实际开发中"获得连接"或"释放资源&q ...

  4. php cli swoole mysql_[了解实践]Swoole、PHP与MySQL:连接池,swoole扩展实现真正的PHP数据库连接池。...

    背景:swoole的出现,包括PHP出现前,在新浪企业邮箱就有基于Sun Solaris 系统上面用c++写Mysql的长连接,那时候的长连接是基于RPC实现,对mysql那一端形成一个远程过程的调用 ...

  5. c mysql 关闭连接池_数据库连接池关闭的时间

    上一篇说到分析关闭连接与不关闭连接的性能,到后来我发现自己得出的结论有误.经过多次测试发现关闭连接和不关闭连接耗费的时间基本一样.进哥也说了这是有连接池的原因.其实,自己以前对Ado.net了解的不深 ...

  6. php+sqlrelay+mysql实现连接池及读写负载均衡

    本文主要介绍sqlrelay的配置安装.通过其性能和一些具体环境的测试来帮助开发者应用在相应的场合中去应付大并发的mysql数据库连接. 什么是sqlrelay? Sqlrelay是一个开源的数据库连 ...

  7. mysql api 连接池_SpringBoot-整合HikariCP连接池

    HikariCP连接池概述池化思想 池化思想是我们项目开发过程中的一种非常重要的思想,如整数池,字符串池,对象池.连接池.线程池等都是池化思想的一种应用,都是 通过复用对象,以减少因创建和释放对象所带 ...

  8. Java数据库开发与应用之MySQL数据库、JDBC操作数据库、C3P0数据库连接池,Java反射等

    MySQL数据库,JDBC接口,MyBatis框架等,掌握的数据的存放和管理. Java数据库开发基础,介绍MySQL数据库.JDBC操作数据库.C3P0数据库连接池,Java反射等内容,进行油画商城 ...

  9. hibernate访问mysql没有响应_Struts2+hibernate + mysql C3P0连接池 导致写数据库无反应(死机)...

    我学hibernate刚学不久,最近用s2h+mysql做了个网站,买了个jsp的空间,发布到空间去了之后,第二天访问却访问不了,一查才知道,hiberante默认的连接数据库的时间有个限度,如果在这 ...

  10. mysql内连接和外连接的区别_Swoole4创建Mysql连接池

    一 .什么是mysql连接池 场景:每秒同时有1000个并发,但是这个mysql同时只能处理400个连接,mysql会宕机. 解决方案:连接池,这个连接池建立了200个和mysql的连接,这1000个 ...

最新文章

  1. Mac 上使用 Clion 阅读C++源码的一些操作
  2. Re: 从零开始的【comic spider】(序幕)
  3. java登录界面_java实现登陆页面
  4. SQL中group by的用法
  5. 标准时间校对_光源色灯箱标准原理
  6. java 高级网络编程_java高级网络编程—客户端与服务器
  7. 创建ServerSocket出错Permission denied
  8. springboot微信登陆
  9. Spring框架 编程式事务 事务的传播行为(一)
  10. 荧光微球激发光谱图/橙色荧光微球/绿色荧光微球/氨基红色荧光微球/氨基橙色荧光微球
  11. 关于android删除语音搜索功能的基本操作方法
  12. 1665. 计算数字
  13. 2021年森林督查暨森林资源管理“一张图”更新工作方案
  14. 前端动画渲染引擎pixi.js系列(5)Text文本和Graphics画笔工具
  15. java文档注释用什么开头,极其重要
  16. 联通云的七大“场景云”,能让用户实现云计算自由吗?
  17. 布尔表达式和选择结构
  18. 写给自己,也写给正准备开始创业的人
  19. Visual MODFLOW4.1中文版学习资料
  20. 再见了新阳丽舍,再见了新雅阁301

热门文章

  1. Vue---vue-cli 中的proxyTable解决开发环境中的跨域问题
  2. jQuery.ajax处理继续响应:“成功:”还是“ .done”?
  3. 如何在Android按钮上以编程方式设置drawableLeft?
  4. require()和library()有什么区别?
  5. 为JavaScript日期添加天数
  6. Win11系统线程异常未处理怎么办?Win11系统线程异常未处理解决方法
  7. win11网络无法连接怎么办 Windows11连不上网的解决方法
  8. 微软Windows 11正式发布!(附安装教程)
  9. 自定义action消息
  10. window.open打开页面并传值,window. location.search遍历获取到的请求链接中的所有参数