Druid 德鲁伊连接池技术

  • 步骤:

    1. 去官网去下载一个德鲁伊的jar —> druid-1.0.9.jar
    2. 定义配置文件:使用properties文件类型的,名字随便起
    3. 手动加载配置文件信息: Properties集合
    4. 获取DataSource对象 :通过工厂方式来实现的,DruidDataSourceFactory
    5. 从连接池中获取连接对象: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 德鲁伊连接池技术相关推荐

  1. Druid(德鲁伊)连接池

    Druid(德鲁伊)连接池是阿里提供的数据库连接池,集DBCP,C3P0,Proxool的优点于一身的数据库连接池,功能强大,速度快,稳定性好,具有强大的监控功能,也可以防止SQL的注入. 1.在使用 ...

  2. 连接池及Druid(德鲁伊) 数据库连接池

    连接池及Druid(德鲁伊) 数据库连接池 一.数据库连接池 数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个:释放空闲时间超过最大空闲时间 ...

  3. 德鲁伊连接池(druid)

    文章目录 一.连接池 1.什么是连接池 2.为什么要用连接池 二.德鲁伊连接池(druid) 1.介绍 2.代码实操 一.连接池 1.什么是连接池 简单来说就是一组连接组成的一个池子(集合),称为连接 ...

  4. java 的德鲁伊连接池_德鲁伊连接池-Druid

    利用Druid连接池获得数据库连接(得到一个连接对象): package com.hk.utils; import com.alibaba.druid.pool.DruidDataSource; im ...

  5. c3p0连接池技术和Druid连接池技术比较

    开发中经常遇到使用c3p0技术和Druid技术建立的工具类JDBCUtils, 下面将对这两种技术进行简单的介绍. java程序与数据库数据交互的步骤 1. 首先需要与数据库建立连接, 即完成驱动注册 ...

  6. springboot 配置德鲁伊连接池

    一.数据库连接池 1.1什么是数据库连接池 数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个:释放空闲时间超过最大空闲时间的数据库连接来避免 ...

  7. [JAVA]使用德鲁伊连接池和DAO方法完成对goods表的crud

    目录 1.配置德鲁伊连接池的properties文件. 2.创建goods表,并插入数据[MySQL]. 3.创建德鲁伊数据库连接池的工具类. 4.创建Goods的domain层 5.创建BasicD ...

  8. 满汉楼(德鲁伊连接池+DBUtils+DAO+Mysql)保姆级别分析+代码实现

    一:需求 1.完成一个酒店后台管理系统,当然只是模拟,在控制台就行模拟 2.实现管理人员的登录和酒店成本账单的查看,以及正常的点餐,结账和查看账单等等功能 二:实现的功能展示 1.用户登录(这里输入的 ...

  9. 走进JavaWeb技术世界3:JDBC的进化与连接池技术

    网络访问 随着 Oracle, Sybase, SQL Server ,DB2,  Mysql 等人陆陆续续住进数据库村, 这里呈现出一片兴旺发达的景象, 无数的程序在村里忙忙碌碌, 读写数据库,   ...

最新文章

  1. 机器学习(5)降维 -- 特征选择(低方差过滤与相关系数)与主成分分析(PCA降维)
  2. mysql如何让自增id从某个位置开始设置方法
  3. mac攻略(1) -- 简单配置php开发环境
  4. 《营销云价值解读与场景实践》白皮书重磅首发,加码企业数字化营销!
  5. androidstudio sqlite where 条件_SQL 面试题:WHERE 和 HAVING、ON 有什么区别?
  6. linux cat代码,linux cat命令(示例代码)
  7. 微服务的好处与弊端_《微服务架构设计模式》-学习总结07
  8. 华硕z170a如何开启m2_跑得快也要站得稳,华硕灵珑II笔记本保护你的数据安全
  9. TextView内部类Layout光标相关方法
  10. 李宏毅2020机器学习资料汇总
  11. Mac Quicktime 录屏带声音
  12. numpy array 升维
  13. 使用纸壳CMS创建多语言网站
  14. R语言 substitute
  15. vue更换主题设置主题
  16. java连接neo4j(使用spring data neo4j)
  17. python百科全书_【技术观点】手把手教你用Python读懂全球最大百科全书
  18. 摩拜ofo补贴战熄火 月卡大涨价网店打折卖
  19. Ansys Zemax | 如何模拟双折射偏振器件
  20. Android 运行到手机中图片有比较严重的色差

热门文章

  1. Centos配置登录提示信息
  2. 高级软件工程——聚焦软件危机
  3. 【Java】面向对象继承法举例3——猫狗动物类
  4. 上线“金睛”平台 绿色直播自律联盟迎来第二批成员
  5. Java bho插件_VC++开发BHO插件——定制你的浏览器  作者 陆其明
  6. 博途PID编程应用(状态机)
  7. 各路大咖云集探讨eBPF技术在可观测性领域的落地现状和未来可能
  8. 应届生就业难吗-誉天红帽RCHE学员就业分享
  9. 多模态理论张德禄_观点 | 多模态视角下二语语用道歉行为研究
  10. YOLOV5改进-添加EIoU,SIoU,AlphaIoU,FocalEIoU,Wise-IoU