Druid 德鲁伊连接池技术
Druid 德鲁伊连接池技术
- 步骤:
- 去官网去下载一个德鲁伊的jar —> druid-1.0.9.jar
- 定义配置文件:使用properties文件类型的,名字随便起
- 手动加载配置文件信息: Properties集合
- 获取DataSource对象 :通过工厂方式来实现的,DruidDataSourceFactory
- 从连接池中获取连接对象:getConnection()
// src/druid.properties
# 键值对格式的 键和值用 = 连接
# 连接数据库的四大组件
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///java31?characterEncoding=utf8
username=root
password=123456
#初始化池子的连接数量
initialSize=10
#最大池子连接数量
maxActive=50
#最长等待时间
maxWait=2000
package com.zhiyou100.jdbc.tools;import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;import javax.sql.DataSource;import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.zhiyou100.jdbc.druid.DruidDemo02;// 使用德鲁伊连接池配置工具类
public class DruidUtil {private static DataSource pool;// 把加载德鲁伊的一套放进静态代码块中static{//手动加载配置文件信息: Properties集合Properties properties = new Properties();// 使用当前类的字节码对象获取该字节码对象的类加载器 去读取配置文件信息InputStream is = DruidDemo02.class.getClassLoader().getResourceAsStream("druid.properties");try {// 把输入流中的信息读取properties集合当中properties.load(is);// 获取DataSource对象 :通过工厂方式来实现的,DruidDataSourceFactorypool = DruidDataSourceFactory.createDataSource(properties);} catch (Exception e) {e.printStackTrace();}}// 对外提供获取连接的对象public static Connection getConnection() throws SQLException {return pool.getConnection();}// 提供获取连接池的方法public static DataSource getDataSource() {return pool;}// 释放资源的方法public static void closeAll(ResultSet set,PreparedStatement ps,Connection conn) {if (set != null) {try {set.close();} catch (SQLException e) {e.printStackTrace();}}if (ps != null) {try {ps.close();} catch (SQLException e) {e.printStackTrace();}}if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}
}
/*** 一个完整的*/
package com.zhiyou100.jdbc.druid;import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;/*** @author czw 2021年1月7日下午3:56:52*/
public class DruidDemo02 {private static DataSource POOL = null;// 把加载德鲁伊的一套东西放到代码块中static {// 手动加载配置文件信息,使用Properties集合Properties properties = new Properties();// 读取配置文件信息 使用类加载器 classpath 类路径下面InputStream is = DruidDemo02.class.getClassLoader().getResourceAsStream("druid.properties");// 使用Properties集合读取输入流 loadtry {properties.load(is);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {// 获取DataSource对象,通过工厂方式来实现的,DruidDataSourceFactory 调用// createDataSource(properties)POOL = DruidDataSourceFactory.createDataSource(properties);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void main(String[] args) throws Exception {// 添加一条数据// insertData();// 修改一条数据// updateData();// 删除一条数据// deleteData();// 查询全部表中的全部数据queryAll();}// 查询全部表中的全部数据public static void queryAll() throws Exception {Connection conn = POOL.getConnection();String sql = "select * from account";PreparedStatement ps = conn.prepareStatement(sql);ResultSet set = ps.executeQuery();// 遍历while (set.next()) {int id = set.getInt(1);String username = set.getString(2);double balance = set.getDouble(3);System.out.println(id + "--" + username + "--" + balance);}}// 删除一条数据public static void deleteData() throws SQLException {Connection conn = POOL.getConnection();String sql = "delete from account where username = ?";PreparedStatement ps = conn.prepareStatement(sql);ps.setString(1, "小五");int count = ps.executeUpdate();if (count > 0) {System.out.println("删除成功");} else {System.out.println("删除失败");}ps.close();conn.close(); // 归还连接池中}// 修改一条数据public static void updateData() throws SQLException {Connection conn = POOL.getConnection();String sql = "update account set username = ? where username = ?";PreparedStatement ps = conn.prepareStatement(sql);ps.setString(1, "小五");ps.setString(2, "王五");int count = ps.executeUpdate();if (count > 0) {System.out.println("修改成功");} else {System.out.println("修改失败");}ps.close();conn.close(); // 归还连接池中}// 添加一条数据/*** @throws SQLException* */private static void insertData() throws SQLException {// 注册驱动// 获取连接Connection conn = POOL.getConnection();// 准备sql语句String sql = "insert into account values(null,?,?)";// 获取执行sql对象PreparedStatement ps = conn.prepareStatement(sql);ps.setString(1, "王五");ps.setDouble(2, 5000);// 执行sql语句,把sql语句发送给mysql服务器int count = ps.executeUpdate();if (count > 0) {System.out.println("添加成功");} else {System.out.println("添加失败");}// 释放资源ps.close();conn.close();}
}
Druid 德鲁伊连接池技术相关推荐
- Druid(德鲁伊)连接池
Druid(德鲁伊)连接池是阿里提供的数据库连接池,集DBCP,C3P0,Proxool的优点于一身的数据库连接池,功能强大,速度快,稳定性好,具有强大的监控功能,也可以防止SQL的注入. 1.在使用 ...
- 连接池及Druid(德鲁伊) 数据库连接池
连接池及Druid(德鲁伊) 数据库连接池 一.数据库连接池 数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个:释放空闲时间超过最大空闲时间 ...
- 德鲁伊连接池(druid)
文章目录 一.连接池 1.什么是连接池 2.为什么要用连接池 二.德鲁伊连接池(druid) 1.介绍 2.代码实操 一.连接池 1.什么是连接池 简单来说就是一组连接组成的一个池子(集合),称为连接 ...
- java 的德鲁伊连接池_德鲁伊连接池-Druid
利用Druid连接池获得数据库连接(得到一个连接对象): package com.hk.utils; import com.alibaba.druid.pool.DruidDataSource; im ...
- c3p0连接池技术和Druid连接池技术比较
开发中经常遇到使用c3p0技术和Druid技术建立的工具类JDBCUtils, 下面将对这两种技术进行简单的介绍. java程序与数据库数据交互的步骤 1. 首先需要与数据库建立连接, 即完成驱动注册 ...
- springboot 配置德鲁伊连接池
一.数据库连接池 1.1什么是数据库连接池 数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个:释放空闲时间超过最大空闲时间的数据库连接来避免 ...
- [JAVA]使用德鲁伊连接池和DAO方法完成对goods表的crud
目录 1.配置德鲁伊连接池的properties文件. 2.创建goods表,并插入数据[MySQL]. 3.创建德鲁伊数据库连接池的工具类. 4.创建Goods的domain层 5.创建BasicD ...
- 满汉楼(德鲁伊连接池+DBUtils+DAO+Mysql)保姆级别分析+代码实现
一:需求 1.完成一个酒店后台管理系统,当然只是模拟,在控制台就行模拟 2.实现管理人员的登录和酒店成本账单的查看,以及正常的点餐,结账和查看账单等等功能 二:实现的功能展示 1.用户登录(这里输入的 ...
- 走进JavaWeb技术世界3:JDBC的进化与连接池技术
网络访问 随着 Oracle, Sybase, SQL Server ,DB2, Mysql 等人陆陆续续住进数据库村, 这里呈现出一片兴旺发达的景象, 无数的程序在村里忙忙碌碌, 读写数据库, ...
最新文章
- 机器学习(5)降维 -- 特征选择(低方差过滤与相关系数)与主成分分析(PCA降维)
- mysql如何让自增id从某个位置开始设置方法
- mac攻略(1) -- 简单配置php开发环境
- 《营销云价值解读与场景实践》白皮书重磅首发,加码企业数字化营销!
- androidstudio sqlite where 条件_SQL 面试题:WHERE 和 HAVING、ON 有什么区别?
- linux cat代码,linux cat命令(示例代码)
- 微服务的好处与弊端_《微服务架构设计模式》-学习总结07
- 华硕z170a如何开启m2_跑得快也要站得稳,华硕灵珑II笔记本保护你的数据安全
- TextView内部类Layout光标相关方法
- 李宏毅2020机器学习资料汇总
- Mac Quicktime 录屏带声音
- numpy array 升维
- 使用纸壳CMS创建多语言网站
- R语言 substitute
- vue更换主题设置主题
- java连接neo4j(使用spring data neo4j)
- python百科全书_【技术观点】手把手教你用Python读懂全球最大百科全书
- 摩拜ofo补贴战熄火 月卡大涨价网店打折卖
- Ansys Zemax | 如何模拟双折射偏振器件
- Android 运行到手机中图片有比较严重的色差
热门文章
- Centos配置登录提示信息
- 高级软件工程——聚焦软件危机
- 【Java】面向对象继承法举例3——猫狗动物类
- 上线“金睛”平台 绿色直播自律联盟迎来第二批成员
- Java bho插件_VC++开发BHO插件——定制你的浏览器 作者 陆其明
- 博途PID编程应用(状态机)
- 各路大咖云集探讨eBPF技术在可观测性领域的落地现状和未来可能
- 应届生就业难吗-誉天红帽RCHE学员就业分享
- 多模态理论张德禄_观点 | 多模态视角下二语语用道歉行为研究
- YOLOV5改进-添加EIoU,SIoU,AlphaIoU,FocalEIoU,Wise-IoU