Java 学习笔记 三 -- 数据库连接池 Druid

一、Druid的简单使用

 1 try{
 2     //1.创建Druid数据源对象
 3     DruidDataSource dataSource = new DruidDataSource();
 4         
 5     //2.设置数据库连接信息
 6     dataSource.setDriverClassName("com.mysql.jdbc.Driver");
 7     dataSource.setUrl("jdbc:mysql://localhost:3306/dbtao?useSSL=false");
 8     dataSource.setUsername("root");
 9     dataSource.setPassword("");
10     //设置连接池初始化的连接个数
11     dataSource.setInitialSize(5);
12     
13     //3.从数据库连接池获取数据库连接
14     // 首次从连接池获取连接时,会初始化话连接池中的连接数
15     Connection conn = dataSource.getConnection();
16     PreparedStatement st = conn.prepareStatement("select * from emp");
17     ResultSet rs = st.executeQuery();
18     while(rs.next()){
19         System.out.println(rs.getString("ename"));
20     }
21     rs.close();
22     st.close();
23     //4.释放数据库连接,不是关闭数据库连接,而是放回了数据库连接池中
24     conn.close();
25     //5.关闭数据源
26     dataSource.close();
27 }catch(Exception e){
28     e.getStackTrace();
29 }

二、从工厂获取数据源

 1 try{
 2     //1.设置数据库连接信息
 3     /** Map 构造
 4         Map<String,String> map =new HashMap<>();
 5         map.put("driverClassName", "com.mysql.jdbc.Driver");
 6         map.put("url", "jdbc:mysql://localhost:3306/dbtao?useSSL=false");
 7         map.put("username", "root");
 8         map.put("password", "");
 9         DataSource dataSource = DruidDataSourceFactory.createDataSource(map);
10     */
11             
12     Properties prop = new Properties();
13     /**Properties 逐个设置
14         prop.setProperty("driverClassName", "com.mysql.jdbc.Driver");
15         prop.setProperty("url", "jdbc:mysql://127.0.0.1:3306/00?useSSL=false");
16         prop.setProperty("username", "root");
17         prop.setProperty("password", "123456");
18     */
19 
20     // 加载 Properties配置文件的内容到对象中
21     InputStream in = new FileInputStream("jdbc.properties");
22     prop.load(in);
23             
24     //2.初始化Druid数据源对象
25     DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
26             
27     Connection conn = dataSource.getConnection();
28     PreparedStatement st = conn.prepareStatement("select * from emp");
29     ResultSet rs = st.executeQuery();
30     while(rs.next()){
31         System.out.println(rs.getString("ename"));
32     }
33             
34     rs.close();
35     st.close();
36     //4.释放数据库连接,不是关闭数据库连接,而是放回了数据库连接池中
37     conn.close();
38 
39 }catch(Exception e){
40     e.getStackTrace();
41 }

三、封装 DBUtil

 

 1 import java.io.*;
 2 import java.sql.*;
 3 import java.util.*;
 4 import javax.sql.*;
 5 import com.alibaba.druid.pool.DruidDataSourceFactory;
 6 
 7 public class DBUtil {
 8     static DataSource dataSource;
 9     static {
10         try {
11             Properties prop = new Properties();
12             // 1.创建一个字节输入流的对象
13             InputStream in = new FileInputStream("jdbc.properties");
14             prop.load(in);
15             // 2.初始化数据源
16             dataSource = DruidDataSourceFactory.createDataSource(prop);
17             System.out.println("初始化数据源信息成功....");
18         } catch (Exception e) {
19             System.out.println("初始化数据源信息异常....");
20             e.printStackTrace();
21         }
22     }
23     /**
24      * 获取数据库连接池
25      */
26     public static DataSource getDataSource() {
27         return dataSource;
28     }
29     /**
30      * 获取数据库连接
31      */
32     public static Connection getConnection() {
33         Connection conn = null;
34         try {
35             conn = dataSource.getConnection();
36         } catch (SQLException e) {
37             e.printStackTrace();
38         }
39         return conn;
40     }
41     /**
42      * 释放数据库连接
43      */
44     public static void close(Connection conn,Statement st,ResultSet rs) {
45         if(rs!=null) {
46             try {
47                 rs.close();
48             } catch (SQLException e) {
49                 e.printStackTrace();
50             }
51         }
52         close(conn,st);
53     }
54     public static void close(Connection conn,Statement st) {
55         if(st!=null) {
56             try {
57                 st.close();
58             } catch (SQLException e) {
59                 e.printStackTrace();
60             }
61         }
62         close(conn);
63     }
64     public static void close(Connection conn) {
65         if(conn!=null) {
66             try {
67                 conn.close();
68             } catch (SQLException e) {
69                 e.printStackTrace();
70             }
71         }
72     }
73     public static void commit(Connection conn){
74         if(conn!=null) {
75             try {
76                 conn.commit();
77             } catch (SQLException e) {
78                 e.printStackTrace();
79             }
80         }
81     }
82     public static void rollback(Connection conn){
83         if(conn!=null) {
84             try {
85                 conn.rollback();
86             } catch (SQLException e) {
87                 e.printStackTrace();
88             }
89         }
90     }
91 }

 

 

 

jdbc.properties:

 

# database config
driverClassName = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/dbtao?useSSL=false
username = root
password = 123456

 

转载于:https://www.cnblogs.com/AardWolf/p/10944917.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值