基于Druid数据库连接池的DBUtil工具类
工具类 DruidUtil.java
package com.zzuli.util; import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource;
import java.io.IOException;
import java.sql.*;
import java.util.Properties; /**
* Created by hejjon on 2019/6/19 23:10.
* <p>
* 基于Druid数据库连接池的工具类
*/
public class DruidUtil {
// 私有成员 DataSource
private static DataSource ds; static {
try {
// 加载配置文件
Properties pro = new Properties();
pro.load(DruidUtil.class.getClassLoader().getResourceAsStream("druid.properties"));
// 获取DataSource对象
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 获取连接
* @return
* @throws SQLException
*/
public static Connection getConnection() throws SQLException {
return ds.getConnection();
} /**
* 获取数据库连接池对象
* @return
*/
public static DataSource getDataSource() {
return ds;
} /**
* 释放数据库资源
* @param rs
* @param sta
* @param conn
*/
public static void close(ResultSet rs, Statement sta, Connection conn) {
if (null != rs) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
} if (null != sta) {
try {
sta.close();
} catch (SQLException e) {
e.printStackTrace();
}
} if (null != conn) {
try {
conn.close(); // 归还数据库连接对象
} catch (SQLException e) {
e.printStackTrace();
}
}
} /**
* 释放数据库连接资源
* @param sta
* @param conn
*/
public static void close(Statement sta, Connection conn) {
close(null, sta, conn);
} }
配置文件druid.properties
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/zzuli
username=root
password=123123
# 初始化连接数量
initialSize=5
# 最大连接数量
maxActive=10
# 最大等待时间
maxWait=3000
测试类DruidDemo2.java
package com.zzuli.testDruid; import com.zzuli.util.DruidUtil; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException; /**
* Created by hejjon on 2019/6/19 23:25.
* <p>
* 测试工具类DruidUtil
*/
public class DruidDemo2 { public static void main(String[] args) {
Connection conn = null;
PreparedStatement pre = null; // 定义sql语句
String sql = "insert into t_salary values (null,?,?)";
try {
// 获取连接
conn = DruidUtil.getConnection();
// 创建PreparedStatement对象
pre = conn.prepareStatement(sql);
// 设置?的值
pre.setString(1, "王五");
pre.setInt(2, 4000); // 执行sql
int count = pre.executeUpdate(); if (count >= 1) {
System.out.println("记录添加成功");
} } catch (SQLException e) {
e.printStackTrace();
} } }
数据库查询结果
基于Druid数据库连接池的DBUtil工具类的更多相关文章
- 数据库连接池与SQL工具类
数据库连接池与SQL工具类 1.数据库连接池 依赖包 pymysql dbutils # -*- coding: utf-8 -*- ''' @Time : 2021/11/19 16:45 @Aut ...
- Spring Boot [使用 Druid 数据库连接池]
导读 最近一段时间比较忙,以至于很久没有更新Spring Boot系列文章,恰好最近用到Druid, 就将Spring Boot 使用 Druid作为数据源做一个简单的介绍. Druid介绍: Dru ...
- Druid 数据库连接池
druid 数据库连接池 由阿里提供 步骤 1 导包 durid1.0.9 jar 包 2 定义配置文件 必须是 properties文件 名字任意 位置也任意 3 获得数据库连接池对象 通过 Dur ...
- Druid数据库连接池源码分析
上一篇文章重点介绍了一下Java的Future模式,最后意淫了一个数据库连接池的场景.本想通过Future模式来防止,当多个线程同时获取数据库连接时各自都生成一个,造成资源浪费.但是忽略了一个根本的功 ...
- Druid数据库连接池就这么简单
前言 本章节主要讲解Druid数据库连接池,为什么要学Druid数据库连接池呢?? 我的知识储备数据库连接池有两种->C3P0,DBCP,可是现在看起来并不够用阿~当时学习C3P0的时候,觉得这 ...
- 基于AQS实现的Java并发工具类
本文主要介绍一下基于AQS实现的Java并发工具类的作用,然后简单谈一下该工具类的实现原理.其实都是AQS的相关知识,只不过在AQS上包装了一下而已.本文也是基于您在有AQS的相关知识基础上,进行讲解 ...
- 【spring boot】15.spring boot项目 采用Druid数据库连接池,并启用druid监控功能
在http://www.cnblogs.com/sxdcgaq8080/p/9039442.html的基础上,来看看spring boot项目中采用Druid连接池. GitHub地址:示例代码 == ...
- Spring Boot集成Druid数据库连接池
1. 前言 Druid数据库连接池由阿里巴巴开源,号称是java语言中最好的数据库连接池,是为监控而生的.Druid的官方地址是:https://github.com/alibaba/druid 通过 ...
- 数据库连接池,DBUtil的模板,dbcp,c3p0
数据库连接池,DBUtil的模板,Druid使用(重点) 一.DBUtil模板 public class DBUtilTest { public static Connection connectio ...
随机推荐
- 第05节-BLE协议物理层(PHY)
对于软件的人来说,物理层关注的内容会少一点.在前面的博客中,我们以快递员类比物理层,对于快递员来说,道路千万条,这条不通换另外一条.对于物理层来说也是一样的,它有很多频率,这个频率有冲突了,将会切到另 ...
- Android Studio + uiautomator 配置运行
1.在build.gradle中添加依赖: androidTestImplementation 'com.android.support.test.uiautomator:uiautomator-v1 ...
- Memcache未授权访问漏洞简单修复方法
漏洞描述: memcache是一套常用的key-value缓存系统,由于它本身没有权限控制模块,所以开放在外网的memcache服务很容易被攻击者扫描发现,通过命令交互可直接读取memcache中的敏 ...
- The Best Blockchain Open Source Projects
https://101blockchains.com/blockchain-open-source/ Blockchain has been the buzzword of the year for ...
- c语言定义的几种易错的说明
int p; //一个整数 int p [5]; //一个包含5个整数的数组 int * p; //指向整数的指针 int * p [10]; //一个包含10个整数指针的数组 int ** p; / ...
- PATA1031 Hello World for U
参考代码: #include <cstdio> #include <cstring> int main() { char str[100], ans[40][40]; scan ...
- c# MongoDB分页辅助类,支持多条件查询
创建一个获取MongoDB数据库实例的类 public class Db { private static IMongoDatabase db = null; private static reado ...
- 5 系统的软中断CPU升高,一般处理办法?
还是需要多动手,一个一个问题个被get!
- 蚂蚁花呗5面面试真题,你敢来挑战一下吗?(Java岗)
蚂蚁花呗一面(一个小时): JDK 中有哪几个线程池?顺带把线程池讲了个遍 Java容器有哪些?哪些是同步容器,哪些是并发容器? ArrayList和LinkedList的插入和访问的时间复杂度? j ...
- 前端与算法 leetcode 242. 有效的字母异位词
目录 # 前端与算法 leetcode 242. 有效的字母异位词 题目描述 概要 提示 解析 解法一:哈希表 解法二:数组判断字符出现次数 解法三:转换字符串 算法 传入测试用例的运行结果 执行结果 ...