Java 使用 DBCP mysql 连接池 做数据库操作

需要的jar包有 commons-dbutils , commons-dbcp , commons-pool , mysql-connector-java

本地database.propertties 配置为

driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost/mydatabase?useUnicode=true&characterEncoding=GBK
username=root
password=***

该文件创建在src根目录下

首先做一个DBCP工具类

 1 package JDBCDemo;
 2
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 import java.util.Properties;
 6
 7 import javax.activation.DataSource;
 8
 9 import org.apache.commons.dbcp.BasicDataSource;
10
11 public class DBCPUtils {
12     private DBCPUtils() {};
13     private static BasicDataSource dbs = new BasicDataSource();
14     private static String className="";
15     private static String sqlUrl="";
16     private static String sqlUser="";
17     private static String sqlPassword="";
18     static {
19         initConfig();
20         //设置基本信息
21         dbs.setDriverClassName(className);
22         dbs.setUrl(sqlUrl);
23         dbs.setUsername(sqlUser);
24         dbs.setPassword(sqlPassword);
25         //对连接池控制数--可不配
26         dbs.setInitialSize(10); //连接池初始化连接数
27         dbs.setMaxActive(8); //最大链接数量
28         dbs.setMaxIdle(5); //最大空闲数
29         dbs.setMinIdle(5); //最小空闲数
30     }
31     public static BasicDataSource getDataSource() {
32         return dbs;
33     }
34     private static void initConfig() {
35         InputStream inf = JDBCUtils.class.getClassLoader().getResourceAsStream("database.propertties");
36         Properties properties = new Properties();
37         try {
38             properties.load(inf);
39             className = properties.getProperty("driverClass");
40             sqlUrl = properties.getProperty("url");
41             sqlUser = properties.getProperty("username");
42             sqlPassword = properties.getProperty("password");
43         } catch (IOException e) {
44             e.printStackTrace();
45         }
46     }
47 }

应用该工具类 结合 DBUtils 写的demo

 1 package JDBCDemo;
 2
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 import java.sql.Connection;
 6 import java.sql.SQLException;
 7 import java.util.Properties;
 8 import javax.management.RuntimeErrorException;
 9 import org.apache.commons.dbcp.BasicDataSource;
10 import org.apache.commons.dbutils.QueryRunner;
11
12
13 public class DBCPDemo {
14     private static QueryRunner qr = new QueryRunner(DBCPUtils.getDataSource());
15     public static void main(String[] args) {
16         try {
17             insert();
18         } catch (Exception e) {
19             e.printStackTrance();
20         }
21     }
22     public static void insert() throws SQLException {
23         String sql = "insert into zhangwu (name,money) values (?,?)";
24         Object[] obj = {"麻将支出",100};
25         int res = qr.update(sql,obj);
26         if (res>0) {
27             System.out.println("插入数据成功");
28         }else {
29             System.out.println("插入数据失败");
30         }
31     }
32 }
时间: 2024-10-24 16:07:17

Java 使用 DBCP mysql 连接池 做数据库操作的相关文章

DBCP数据源连接池实现原理分析

前些天在调试公司系统的时候发现这样的一个问题:mysql数据库服务停止一段时间后再次重启后吗,tomcat服务无法请求数据库服务,调试了半天对这个问题进行定位解决,期间也搞了很多有关mysql数据库的知识,包括数据库连接池的问题,以前没有遇到问题的时候只知道数据库连接池这个概念和如何配置,但是当遇到问题的时候就要去看怎么实现了,比如很简单的默认的数据库连接池的个数是多少呢,我相信没有看过源代码的是不知道的,答案是8.下面就针对最近学习的org.apache.commons.dbcp.BasicD

nodejs + redis/mysql 连接池问题

nodejs + redis/mysql 连接池问题 需不需要连接池 连接池的作用主要是较少每次临时建立连接所带来的开销.初步一看,nodejs运行单线程上,它不能同时使用多个连接,乍一看是不需要连接池的.但是这只是我们初步下意识的感觉,下面我们详细分析来看看这个结论对是不对. 先从简单的redis开始. redis服务器也是运行在单线程上的.俩都是单线程,看起来更加坚定不需要连接池的结论了. 从详细的图像来看看nodejs 连接 redis用连接池有没有意义. 上图中,nodejs共有俩连接,

Swoole MySQL 连接池的实现

目录 概述 代码 扩展 小结 概述 这是关于 Swoole 入门学习的第八篇文章:Swoole MySQL 连接池的实现. 第七篇:Swoole RPC 的实现 第六篇:Swoole 整合成一个小框架 第五篇:Swoole 多协议 多端口 的应用 第四篇:Swoole HTTP 的应用 第三篇:Swoole WebSocket 的应用 第二篇:Swoole Task 的应用 第一篇:Swoole Timer 的应用 收到读者的咨询,这情况大家可能也会有,所以就在这说说: "亮哥,我今年30岁了,

redis mysql 连接池 之 golang 实现

分享一下 golang 实现的 redis 和 mysql 连接池,可以在项目中直接引用连接池句柄,调用对应的方法. 举个栗子: 1 mysql 连接池的使用 (1) 在项目子目录放置 mysql.go (2)在需要调用的地方导入连接池句柄 DB (3)调用 DB.Query() 2 redis 连接池的使用 (1)在项目子目录放置 redis.go (2)在需要调用的地方导入连接池句柄 Cache (3)调用 Cache.SetString ("test_key", "te

解决Mysql连接池被关闭 ,hibernate尝试连接不能连接的问题。 (默认mysql连接池可以访问的时间为8小时,如果超过8小时没有连接,mysql会自动关闭连接池。系统发布第二天访问链接关闭问题。

解决Mysql连接池被关闭  ,hibernate尝试连接不能连接的问题. (默认MySQL连接池可以访问的时间为8小时,如果超过8小时没有连接,mysql会自动关闭连接池. 所以系统发布第二天访问会失去链接,导致访问失败.因此稳定解决办法是把hibernate默认的连接池换成c3p0链接池. 在Hibernate(spring管理)中的配置:<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledData

Swoole4-swoole创建Mysql连接池

一 .什么是mysql连接池 场景:每秒同时有1000个并发,但是这个mysql同时只能处理400个连接,mysql会宕机. 解决方案:连接池,这个连接池建立了200个和mysql的连接,这1000个并发就有顺序的共享这连接池中的200个连接.这个连接池能够带来额外的性能提升,因为这个和mysql建立连接的这个过程消耗较大,使用连接池只需连接一次mysql. 连接池定义:永不断开,要求我们的这个程序是一个常驻内存的程序.数据库连接池(Connection pooling)是程序启动时建立足够的数

Mysql 连接池

通常,如果我们的服务涉及到mysql的操作,当一个新的请求进来的时候,可以先连接mysql, 使用完之后再断开连接即可. 但这样做有个弊端,当请求量巨大时,会在瞬间有大量的数据库连接与断开操作,这是非常影响 mysql 性能的做法.此时,我们就需要使用Mysql连接池. 在 Python 服务中使用 Mysql 连接池 1.建立连接池,sqllib.py import pymysql from DBUtils.PooledDB import PooledDB import Config clas

node.js中mysql连接池的使用

https://cnodejs.org/topic/58378543bde2b59e06141f5a 起初的做法是创建一个连接然后使用,后来发现一段时间后会出现卡死不响应的情况,只有重启nodejs服务,搜索一番后想到了用连接池,经测试,不再出现卡死不响应情况. 参考链接: https://www.npmjs.com/package/mysql http://blog.csdn.net/lovingshu/article/details/41721233 Node.js mysql连接池模块 1

mysql连接池模块

如果不想程序在查询数据时卡死或等待过长时间,一般不推荐在node中开启一个连接后全部查询都用这个链接并且不关闭.因为node里面的mysql不像php里的那样会在完成查询后断开,只要不主动断开,连接一直存在,当连接数量达到一定数量时就会产生严重的阻塞,出现各种延时和卡死现象.在并发量较大时,可以通过建立连接池来缓解并发压力. 在node中的mysql模块里其用来操作数据的query()方法接收的参数是不同的,在使用时需要特别注意.具体模块如下: /** * mysql连接池模块 * @autho