目的:简化书写

分析:

  1.注册驱动

  2.获取连接对象

  3.释放资源

1.注册驱动

2.获取连接对象

需求:不想传递参数,还能保证工具类的通用性
解决方案:配置文件

创建一个properties对象。调用load方法加载文件或字节流

jdbc.properties

url=jdbc:mysql:///girls
user=root
password=ROOT
driver=com.mysql.jdbc.Driver

3.释放资源

package cn.itcast.util;

import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties; /**
* jdbc工具类
*/
public class JDBCUtils {
private static String url;
private static String user;
private static String password;
private static String dirver; /*
* 文件的读取,只需要读取一次即可拿到这值。
* 使用静态代码块:因为静态代码块随着类的加载而加载,只会执行一次
* */
static {
//读取配置文件
try {
//1.创建properties集合类。
Properties pro = new Properties(); //获取src路径下的文件的方式--->
// ClassLoader 类加载器:可以加载类的字节码文件进内存
//可以获取src资源文件的路径,要获取ClassLoader需要获取对应的字节码文件的对象
ClassLoader classLoader = JDBCUtils.class.getClassLoader();
URL res = classLoader.getResource("jdbc.properties");
//url统一资源定位符
String path = res.getPath();
System.out.println(path);
//2.加载文件。只能用try、catch。因为抛需要借助方法,写绝对路径还要改不合适
// pro.load(new FileReader("src/jdbc.properties")); pro.load(new FileReader(path));//加载文件。 //3.获取
url = pro.getProperty("url");
user = pro.getProperty("user");
password = pro.getProperty("password");
dirver = pro.getProperty("driver");
//4.注册驱动
Class.forName(dirver);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
} //获取连接返回连接对象
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, user, password);
} //释放资源,两个重载的方法,通过参数来判断使用哪个
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(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();
}
}
}
}

最新文章

  1. TP框架 ---空控制器和空操作
  2. alpha值的问题
  3. coffeeScript中类的多态[学习篇]
  4. Mayor's posters(线段树+离散化POJ2528)
  5. Facebook内部分享:25个高效工作的小技巧
  6. 正整数转换成N进制的数组
  7. 现代程序设计——homework-06
  8. iOS开发——开发技巧&Mac常用命令
  9. 关于MariaDB和Mysql
  10. ubuntu新内核不能用启动回滚到旧内核的方法
  11. bigdata之hadoop and spark
  12. 找回误删除的UBUNTU16.04桌面壁纸图片,或把桌面背景图片另存。20170114
  13. UVa 10382 - Watering Grass
  14. (原)SQL Server 系统提供功能的三个疑惑
  15. 通过实例介绍Android App自动化测试框架--Unittest
  16. 阿里云-CDN
  17. fastqc
  18. leetcode1020
  19. GetKeyState(vk_control)
  20. linux下更改主机名方法hostname

热门文章

  1. List保持顺序去重
  2. scanf 与fgets
  3. 分布式配置中心:Spring Cloud Config
  4. disabled属性对form表单提交的影响
  5. Kali linux中安装字体的一种方法
  6. Centos安装步骤
  7. PHP0006:PHP基础--函数2
  8. pyqt5-下拉框联动效果
  9. 纪中集训2020.02.03【NOIP提高组】模拟B 组总结反思——登机(board),游戏(game),分组(group)
  10. 【Unity|C#】基础篇(1)——基础入门