一、Druid连接池的创建

package cn.zhouzhou;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties; import javax.sql.DataSource; import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.mchange.v2.c3p0.ComboPooledDataSource; /*
*一、Druid连接池?
* 和之前的c3p0一样,连接池。
* 阿里的产品。
*
*二、怎么用?
*
* 1.导包
* 将【druid-1.0.9 jar】导入到lib目录中。
*
* 2.定义配置文件 .properties 仅此一种格式。
* 1.【druid.properties】可以放在任意位置。------------------------->里面的数据库 修改成自己要用的!
*
       3.加载文件? 
* Properties pro01=new Properties();
* InputStream in01=Druid连接池.class.getClassLoader().getResourceAsStream("druid.properties");
* pro01.load(in01);
*
* 4.获得连接池对象
* DataSource da01=DruidDataSourceFactory.createDataSource(pro01);
*
* 5.获取连接
* Connection con01=da01.getConnection();
*
*/
public class Druid连接池 {
public static void main(String[] args) throws Exception { Properties pro01=new Properties();//1.加载文件 InputStream in01=Druid连接池.class.getClassLoader().getResourceAsStream("druid.properties");//2.通过流的方式获取文件 pro01.load(in01); DataSource da01=DruidDataSourceFactory.createDataSource(pro01);//3.连接池对象 Connection con01=da01.getConnection();//4.获取连接 System.out.println(con01);//4.打印地址,验证是否连接成功 String sql01="select * from shop";
PreparedStatement pr01=con01.prepareStatement(sql01);
ResultSet rs01=pr01.executeQuery();
while (rs01.next()) {
System.out.println(rs01.getInt(1)+" "+rs01.getString(2));
} in01.close(); //关闭流
} }

二、改良版Druid连接池

  我们发现  在加载文件的时候太复杂,能否将其封装成一个工具类,方便使用。

package JdbcUtils;

import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties; import javax.sql.DataSource; import com.alibaba.druid.pool.DruidDataSourceFactory; /*
* 封装一个Druid的工具类 Jdbc
*
*/
public class Jdbc { private static DataSource ds; //1.定义成员变量 DataSource static{
try
{ //2.加载配置文件 获得连接池
Properties pro01=new Properties();
pro01.load(Jdbc.class.getClassLoader().getResourceAsStream("druid.properties"));
ds=DruidDataSourceFactory.createDataSource(pro01);
} catch (Exception e) {
e.printStackTrace();
} } public static Connection getConnection() throws SQLException{ //获得连接
return ds.getConnection();
} public static void close(Statement start,Connection con) { //释放资源
if (start!=null) {
try {
start.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (con!=null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
} }
public static void close(ResultSet rs,Statement start,Connection con) { //重载 继续释放资源。
if (rs!=null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (start!=null) {
try {
start.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (con!=null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
} } }

三、测试Jdbc 封装类。

package cn.zhouzhou;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import JdbcUtils.Jdbc; /*
* 测试我们写的封装 jdbc工具类
*
*/
public class Text01 {
public static void main(String[] args) {
Connection con01=null;
PreparedStatement ps=null;
try { con01=Jdbc.getConnection();//获得连接 String sql01="insert into shop values(999,?,?,'刚把对!')";//定义SQL语句 占位子节符 在shop中 添加一条数据 ps=con01.prepareStatement(sql01); //获得接口 执行平台 ps.setString(1, "haha"); //设置键值对
ps.setDouble(2, 66666); int i=ps.executeUpdate();//执行SQL语句
System.out.println(i); } catch (SQLException e)
{
e.printStackTrace();
}finally{
Jdbc.close(ps, con01);
} } }

Druid数据库连接池的更多相关文章

  1. Druid数据库连接池配置

    DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0.DBCP.PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB ...

  2. Druid数据库连接池源码分析

    上一篇文章重点介绍了一下Java的Future模式,最后意淫了一个数据库连接池的场景.本想通过Future模式来防止,当多个线程同时获取数据库连接时各自都生成一个,造成资源浪费.但是忽略了一个根本的功 ...

  3. Spring Boot [使用 Druid 数据库连接池]

    导读 最近一段时间比较忙,以至于很久没有更新Spring Boot系列文章,恰好最近用到Druid, 就将Spring Boot 使用 Druid作为数据源做一个简单的介绍. Druid介绍: Dru ...

  4. Druid数据库连接池就这么简单

    前言 本章节主要讲解Druid数据库连接池,为什么要学Druid数据库连接池呢?? 我的知识储备数据库连接池有两种->C3P0,DBCP,可是现在看起来并不够用阿~当时学习C3P0的时候,觉得这 ...

  5. Druid 数据库连接池

    druid 数据库连接池 由阿里提供 步骤 1 导包 durid1.0.9 jar 包 2 定义配置文件 必须是 properties文件 名字任意 位置也任意 3 获得数据库连接池对象 通过 Dur ...

  6. 阿里druid数据库连接池配置

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  7. 【spring boot】15.spring boot项目 采用Druid数据库连接池,并启用druid监控功能

    在http://www.cnblogs.com/sxdcgaq8080/p/9039442.html的基础上,来看看spring boot项目中采用Druid连接池. GitHub地址:示例代码 == ...

  8. Spring Boot集成Druid数据库连接池

    1. 前言 Druid数据库连接池由阿里巴巴开源,号称是java语言中最好的数据库连接池,是为监控而生的.Druid的官方地址是:https://github.com/alibaba/druid 通过 ...

  9. 基于Druid数据库连接池的DBUtil工具类

    工具类 DruidUtil.java package com.zzuli.util; import com.alibaba.druid.pool.DruidDataSourceFactory; imp ...

  10. springboot2配置druid数据库连接池

    注意配置以下的依赖: <!-- 引入druid数据源--> <dependency> <groupId>com.alibaba</groupId> &l ...

随机推荐

  1. WPF(一)

    什么是WPF WPF(Windows Presentation Foundation)是用于Windows的现代图形显示系统.与之前出现的技术相比,WPF发生了根本性变化.WPF引用了"内置 ...

  2. 深蓝词库转换2.2发布,支持手心输入法和Win10微软拼音

    距离上一次大版本的发布已经很久很久了,中间是不是会收到一些用户的来信,提出新的需求,于是只是做小版本的更新,终于积累了一些更新后,打算做个大版本的发布了. 深蓝词库转换是一个输入法的词库互转和生成软件 ...

  3. 关于vue的混入使用

    普通使用: 定义一个 mixin.js文件 随便定一些数据 记得后面导出 然后在需要用的文件 就可以获取了. 全局混合: 引入vue 全局注册混合 main.js 入口文件引入 然后就可以在所有页面使 ...

  4. Django适合做大用户量的系统吗?

    分几点来答: 1. 首先,这其实是个技术选型题. 做技术选型的时候不能单纯的考虑性能,应该优先考虑业务类型,以及团队水平.另外的话,框架只是其中一环,还有配套呢. 如果是数据驱动型,尤其是要用到关系型 ...

  5. Maven项目运行Junit测试用例 出现ClassNotFound

    Maven 打包命令 clean package 会清空target下的目录 包含 test-classes 目录 这样执行junit的时候,会出现 ClassNotFound的错误 执行下面的命令即 ...

  6. Linux ACL 权限

    ACL 是什么 ACL的全称是 Access Control List (访问控制列表) ,一个针对文件/目录的访问控制列表.它在UGO权限管理的基础上为文件系统提供一个额外的.更灵活的权限管理机制. ...

  7. 剑指offer--4.重建二叉树

    题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2, ...

  8. RabbitMQ总结

    消息队列 三个业务场景:解耦.异步.削峰 带来问题 系统可用性降低:外部依赖越多,越容易挂掉. 系统复杂性提高:重复消费,消息丢失,消息传递的顺序性 一致性问题: 一.如何保证消息的可靠性传输(如何处 ...

  9. Achievements

    看了Suma,觉得懂了85%以上. 两个月可以学这么多.方法是不懂的就学就行了. 最近学了:字符串,网络流,线段树,斯特林反演,多项式与生成函数,一些数论等.

  10. JS 面向对象 ~ 创建对象的 9 种方式

    一.创建对象的几种方式 1.通过字面量创建 var obj = {}; 这种写法相当于: var obj = new Object(); 缺点:使用同一个接口创建很多单个对象,会产生大量重复代码 2. ...