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

时间:2022-09-04 15:52:52

需要的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工具类

 package JDBCDemo;

 import java.io.IOException;
import java.io.InputStream;
import java.util.Properties; import javax.activation.DataSource; import org.apache.commons.dbcp.BasicDataSource; public class DBCPUtils {
private DBCPUtils() {};
private static BasicDataSource dbs = new BasicDataSource();
private static String className="";
private static String sqlUrl="";
private static String sqlUser="";
private static String sqlPassword="";
static {
initConfig();
//设置基本信息
dbs.setDriverClassName(className);
dbs.setUrl(sqlUrl);
dbs.setUsername(sqlUser);
dbs.setPassword(sqlPassword);
//对连接池控制数--可不配
dbs.setInitialSize(10); //连接池初始化连接数
dbs.setMaxActive(8); //最大链接数量
dbs.setMaxIdle(5); //最大空闲数
dbs.setMinIdle(5); //最小空闲数
}
public static BasicDataSource getDataSource() {
return dbs;
}
private static void initConfig() {
InputStream inf = JDBCUtils.class.getClassLoader().getResourceAsStream("database.propertties");
Properties properties = new Properties();
try {
properties.load(inf);
className = properties.getProperty("driverClass");
sqlUrl = properties.getProperty("url");
sqlUser = properties.getProperty("username");
sqlPassword = properties.getProperty("password");
} catch (IOException e) {
e.printStackTrace();
}
}
}

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

 package JDBCDemo;

 import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import javax.management.RuntimeErrorException;
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbutils.QueryRunner; public class DBCPDemo {
private static QueryRunner qr = new QueryRunner(DBCPUtils.getDataSource());
public static void main(String[] args) {
try {
insert();
} catch (Exception e) {
e.printStackTrance();
}
}
public static void insert() throws SQLException {
String sql = "insert into zhangwu (name,money) values (?,?)";
Object[] obj = {"麻将支出",100};
int res = qr.update(sql,obj);
if (res>0) {
System.out.println("插入数据成功");
}else {
System.out.println("插入数据失败");
}
}
}

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

  1. Java Mysql连接池配置和案例分析--超时异常和处理

    前言: 最近在开发服务的时候, 发现服务只要一段时间不用, 下次首次访问总是失败. 该问题影响虽不大, 但终究影响用户体验. 观察日志后发现, mysql连接因长时间空闲而被关闭, 使用时没有死链检测 ...

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

    前些天在调试公司系统的时候发现这样的一个问题:mysql数据库服务停止一段时间后再次重启后吗,tomcat服务无法请求数据库服务,调试了半天对这个问题进行定位解决,期间也搞了很多有关mysql数据库的 ...

  3. mysql连接池的使用工具类代码示例

    mysql连接池代码工具示例(scala): import java.sql.{Connection,PreparedStatement,ResultSet} import org.apache.co ...

  4. 用swoole简单实现MySQL连接池

    MySQL连接池 在传统的网站开发中,比如LNMP模式,由Nginx的master进程接收请求然后分给多个worker进程,每个worker进程再链接php-fpm的master进程,php-fpm再 ...

  5. workerman如何写mysql连接池

    首先要了解为什么用连接池,连接池能为你解决什么问题 连接池主要的作用1.减少与数据服务器建立TCP连接三次握手及连接关闭四次挥手的开销,从而降低客户端和mysql服务端的负载,缩短请求响应时间2.减少 ...

  6. nodejs + redis/mysql 连接池问题

    nodejs + redis/mysql 连接池问题 需不需要连接池 连接池的作用主要是较少每次临时建立连接所带来的开销.初步一看,nodejs运行单线程上,它不能同时使用多个连接,乍一看是不需要连接 ...

  7. Swoole MySQL 连接池的实现

    目录 概述 代码 扩展 小结 概述 这是关于 Swoole 入门学习的第八篇文章:Swoole MySQL 连接池的实现. 第七篇:Swoole RPC 的实现 第六篇:Swoole 整合成一个小框架 ...

  8. 转 Swoole】用swoole简单实现MySQL连接池

    MySQL连接池 在传统的网站开发中,比如LNMP模式,由Nginx的master进程接收请求然后分给多个worker进程,每个worker进程再链接php-fpm的master进程,php-fpm再 ...

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

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

随机推荐

  1. C# httprequest post 内容有百分号,部分特殊字符乱码问题

    哎没办法,还没完全脱离.net,已经一半了. http://*.com/questions/7908581/how-to-encode-http-post-parameters ...

  2. TypeError: unsupported operand type(s) for |: 'str' and 'str'

    问题描述:

  3. 错误详情:CL : fatal error C1033: cannot open program database ''

    在网上找了好多方法都不行,最后用下面方法解决了. 修改VS目录下的\VC\bin\cl.exe 的兼容性设置,取消兼容模式和以管理员身份运行即可.

  4. 关于java读取和写入properties配置文件的内容

    一般通过使用流的方式进行读取 代码示例如下: package com.zznode.transmit.util; import java.io.FileInputStream; import java ...

  5. Java定时器:Timer

    项目中往往会遇到需要定时的任务,例如订单,当用户在某个规定时间内没有操作订单时,订单状态将会发生改变. 那么在这种情况下,我们会用到定时器. 举例: import java.util.Timer; / ...

  6. 一些Js操作

    一.after()和before()方法的区别 after()——其方法是将方法里面的参数添加到jquery对象后面去:    如:A.after(B)的意思是将B放到A后面去:    before( ...

  7. Objective-C @executable_path、@loader_path和@rpath

    工程配置中,有三个路径和库的加载息息相关: 1.@executable_path 可执行文件的路径,例如/Applications/WeChat.app/Contents/MacOS. 2.@load ...

  8. 洛谷试炼场-简单数学问题-P1088 火星人

    洛谷试炼场-简单数学问题 A--P1088 火星人 Description 人类终于登上了火星的土地并且见到了神秘的火星人.人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法 ...

  9. Sublime text 3中文汉化教程

    想弄个中文版的sublime,居然可以不用重新下载汉化包或者重新下载简体中文版了~而是只需要安装个插件即可!   工具/原料   电脑 sublime text3编辑器 方法/步骤    启动并进入s ...

  10. JS 遍历 json key ,获取设置可变的key

    $(rec.data[id]).each(function(){ for(var key in this){ if(key == value){ console.info(this[key].desc ...