博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 学习笔记 三 -- 数据库连接池 Druid
阅读量:6123 次
发布时间:2019-06-21

本文共 5037 字,大约阅读时间需要 16 分钟。

一、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
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 configdriverClassName = com.mysql.jdbc.Driverurl = jdbc:mysql://localhost:3306/dbtao?useSSL=falseusername = rootpassword = 123456

 

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

你可能感兴趣的文章
linux 编码转换
查看>>
POJ-2287 Tian Ji -- The Horse Racing 贪心规则在动态规划中的应用 Or 纯贪心
查看>>
Windows8/Silverlight/WPF/WP7/HTML5周学习导读(1月7日-1月14日)
查看>>
关于C#导出 文本文件
查看>>
使用native 查询时,对特殊字符的处理。
查看>>
maclean liu的oracle学习经历--长篇连载
查看>>
ECSHOP调用指定分类的文章列表
查看>>
分享:动态库的链接和链接选项-L,-rpath-link,-rpath
查看>>
vue + vuex + directives实现权限按钮的思路
查看>>
言简意赅——总结Java内存区域和常量池
查看>>
对象,包装类
查看>>
[swift 进阶]读书笔记-第六章:函数 C6P1函数的灵活性(The flexibility of function)...
查看>>
自定义控件总结和思考
查看>>
搞定神秘派之java注解
查看>>
《2019 区块链开发者报告》:Qtum 量子链公链设计与开发细
查看>>
使用协议作为可组合扩展
查看>>
沃伦·巴菲特 | 成功的 10/10/10 法则
查看>>
Object类深入研究
查看>>
停发年终奖背后,是程序员“失宠”了?
查看>>
前端项目如何管理
查看>>