1.导入jar包

druid-1.0.9.jar
导入数据库驱动jar包

2.定义配置文件
  properties形式
  可以叫任意名称,可以放置在任意目录下。(意味着不能自动加载,需要手动导入)
3.加载配置文件 properties
4.获取数据库连接池对象:通过工厂类来获取
5.获取连接:getConnection

配置文件
jar包
文档
源码


基本使用

package cn.itcust.datasource.druid;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties; /**
* Druid演示
*/
public class DruidDemo1 {
public static void main(String[] args) throws Exception {
//1.导如jar包
//2.定义配置文件 //3.加载配置文件
// 创建配置文件的对象
Properties pro = new Properties(); //用getClassLoader().getResourceAsStream直接返回字节输入流
InputStream is = DruidDemo1.class.getClassLoader().getResourceAsStream("druid.properties"); //用load加载文件,并且还会把属性值装载到集合
pro.load(is); //4.获取连接池对象
DataSource ds = DruidDataSourceFactory.createDataSource(pro); //5.获取数据库连接
Connection conn = ds.getConnection(); System.out.println(conn);
}
}
package cn.itcust.datasource.druid;

import cn.itcust.datasource.utils.JDBCUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException; public class DruidDemo2 {
public static void main(String[] args) {
/**
* 完成添加操作
* */
Connection conn = null;
PreparedStatement pstmt = null;
try {
//1.获取连接对象
conn = JDBCUtils.getConnection();
//2.定义SQL
String sql = "insert into user values(null,?,?)";
//3.获取pstmt对象
pstmt = conn.prepareStatement(sql);
//给问号赋值
pstmt.setString(1, "dawang");
pstmt.setString(2, "789");
//4.执行SQL
int count = pstmt.executeUpdate();
System.out.println(count);
} catch (SQLException e) {
e.printStackTrace();
}finally {
//释放资源
JDBCUtils.close(pstmt,conn);
}
}
}

定义工具类,简化操作

原因:连接池只有需要一个
不定义就会非常麻烦

1.定义一个工具类 JDBCUtils
2.提供静态代码块,加载配置文件,初始化连接池对象 
3.提供方法
1.获取连接方法:通过数据库连接池来获取连接对象
2.释放资源
3.获取连接池的方法(有的工具类、小框架里,只需要连接池不需要连接对象,会自己调用连接池的方法)

package cn.itcust.datasource.utils;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties; /**
* Druid连接池的工具类
*/
public class JDBCUtils {
//定义一个成员变量 Datasoutce
private static DataSource ds; //初始化,赋值
static {
try {
//1.加载配置文件,先创建配置文件对象
Properties pro = new Properties();
//2.通过load方法加载
pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
//3.获取连接池
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 获取连接的方法
* 异常抛出去为了能让用户看到,出了问题无法连接
* */
public static Connection getConnection() throws SQLException {
return ds.getConnection();
} /**
* 释放资源,处理掉,视为了方法更加简单
* */
public static void close(Statement stmt, Connection conn){
if (stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null){
try {
conn.close();//归还数据库连接
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 还有一种简化的操作
* 两个参数也调用三个参数的方法,第一个不给值就行了
* */
// public static void close(null,stmt,conn);
} /**
* 重载
* */
public static void close(ResultSet rs, Statement stmt, Connection conn){
if (rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null){
try {
conn.close();//归还数据库连接
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
*获取连接池的方法
* */
public static DataSource getDataSource(){
return ds;
}
}

配置文件

#注册驱动
driverClassName=com.mysql.jdbc.Driver #数据库连接地址
url=jdbc:mysql:///db4 #用户名
username=root #密码
password=ROOT #初始化连接数量
initialSize=5 #最大连接
maxActive=10 #最大等待时间
maxWait=3000

Druid连接技术的更多相关文章

  1. 【Java】java数据库连接中C3P、DBCP、Druid连接池的使用

    使用JDBC的步骤:1.加载数据库驱动2.通过DriverManager获得数据库连接3.通过Connection获得Statement对象4.使用Statement执行SQL语句.5.操作结果集合6 ...

  2. Java开发笔记(一百五十一)Druid连接池的用法

    C3P0连接池自诞生以来在Java Web领域反响甚好,业已成为hibenate框架推荐的连接池.谁知人红是非多,C3P0在大型应用场合中暴露了越来越多的局限性,包括但不限于下列几点:1.C3P0管理 ...

  3. Druid连接池(无框架)

    关于连接池有不少技术可以用,例如c3p0,druid等等,因为druid有监控平台,性能在同类产品中算top0的.所以我采用的事druid连接池. 首先熟悉一个技术,我们要搞明白,为什么要用他, 他能 ...

  4. Spring整合JDBC和Druid连接池

    我的博客名为黑客之谜,喜欢我的,或者喜欢未来的大神,点一波关注吧!顺便说一下,双十二快到了,祝大家双十二快乐,尽情的买买买~ 如果转载我的文章请标明出处和著名,谢谢配合. 我的博客地址为: https ...

  5. druid连接池获取不到连接的一种情况

    数据源一开始配置: jdbc.initialSize=1jdbc.minIdle=1jdbc.maxActive=5 程序运行一段时间后,执行查询抛如下异常: exception=org.mybati ...

  6. 使用druid连接池的超时回收机制排查连接泄露问题

    在工程中使用了druid连接池,运行一段时间后系统出现异常: Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: ...

  7. comet基于HTTP长连接技术(java即时通信,推送技术详解)

    服务器推送技术的基础思想是将浏览器主动查询信息改为服务器主动发送信息,服务器发送一批数据,浏览器显示消息,同时保证与服务器的连接,当服务器需要再一次的发送数据,浏览器显示数据并保持连接. comet基 ...

  8. Druid连接池

    Druid 连接池简介 Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.J ...

  9. 使用MyBatis集成阿里巴巴druid连接池(不使用spring)

    在工作中发现mybatis默认的连接池POOLED,运行时间长了会报莫名其妙的连接失败错误.因此采用阿里巴巴的Druid数据源(码云链接 ,中文文档链接). mybatis更多数据源参考博客链接 . ...

随机推荐

  1. Charles老版本教程

    链接:http://pan.baidu.com/s/1c16PxEo  刮开有奖->密码:dbml 初级篇: 1.1设置代理 1.2参数设置+界面介绍 1.3屏蔽多余数据 1.4请求重发 1.5 ...

  2. 00-django | 02-处理HTTP请求

    00-django | 02-处理HTTP请求 python Django Django 处理 HTTP 请求 Hello 视图函数 我们先以一个最简单的 Hello World 为例来看看 djan ...

  3. ROS之usb_cam

    source devel/setup.*sh roslaunch usb_cam usb_cam-test.launch rqt_graph查看动态消息图 当我们把鼠标放在/usb_cam/image ...

  4. Failed to resolve: com.android.support:appcompat-v7:29.+ 版本不一致错误

    这个问题,困扰了我一天,终于解决, 问题的根本就是 Android studio 的 SDK Build-Tools 与工程所需的不一致.具体讲解如下: 具体解决方案: 1.既然是版本问题,那就的先去 ...

  5. Enable VT-x in your BIOS security settings, ensure that HAXM is installed properly. Try disabling 3rd party security software if the problem still occurs

    win7系统安装了了AndroidStudio3.5后用模拟器报错:Enable VT-x in your BIOS security settings, ensure that HAXM is in ...

  6. IDEA如何恢复到以前的代码

    虽然说IDEA的Ctrl+z撤销操作和Ctrl+Shift+Z重做操作为书写代码提供了很大的便利 但是在各种原因不小心失误撤销后又想不起来代码是怎么写的时候就非常尴尬,这时候就需要代码恢复到以前的状态 ...

  7. Java高级项目实战之CRM系统01:CRM系统概念和分类、企业项目开发流程

    1. CRM系统介绍 CRM系统即客户关系管理系统, 顾名思义就是管理公司与客户之间的关系. 是一种以"客户关系一对一理论"为基础,旨在改善企业与客户之间关系的新型管理机制.客户关 ...

  8. JAVA->查询并显示输入根目录下全部的文件所在目录路径

    public static boolean qf(File f,boolean a){      boolean b=false;   if(a==true){      File[] fl=f.li ...

  9. Java第二节课总结

    Java的基本运行单位是类.类由数据成员和函数成员组成.变量的类型之间可以相互转换.String是一个类.static代表静态变量. 运行结果: false                false  ...

  10. Python中BaseException和Exception的区别

    BaseException 是 Exception 的父类,作为子类的Exception无法截获父类BaseException类型的错误 BaseException: 包含所有built-in exc ...