本篇博客还是沿用JDBC入门五:一个按部门查询员工功能的例子这篇博客中的接口:
本篇博客篇幅很长,但核心内容就3点:(1)DbUtils;(2)【新增、更新、删除数据】的方法;(3)整体的包结构和类组织的套路;
目录
5.入口类:HumanResourceApplication类
一.封装DbUtils工具类:
【创建数据库连接】和【关闭数据库连接】的代码,需要经常用到。可以把这些需要重复使用的代码做成一个工具类,就是DbUtils工具类;

DbUtils类:这个类没什么好说的,看下代码中的注释。
package com.imooc.jdbc.common;
import java.sql.*;
public class DbUtils {
/**
* 创建数据库连接
* @return
* @throws SQLException
* @throws ClassNotFoundException
*/
public static Connection getConnection() throws SQLException, ClassNotFoundException {
//加载并注册JDBC驱动,和,创建数据库连接会产生异常;
// 这儿将异常抛出,而不是捕获;在实际调用这个getConnection()方法的时候,再对这个异常捕获
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/imooc?useSSL=false&useUincode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true", "root", "12345");
return conn;
}
/**
* 关闭数据库连接
* 注:因为关闭方法中,在关闭前都做了判断是不是null,所以当实参是null的时候也是没问题的。即比如新增、删除、更新操作没有ResultSet,因为这儿ResultSet形参可以为null;所以,插叙,新增,删除,更新都可以调用这个方法;
* @param rs:结果集对象;
* @param stmt:执行SQL的Statement对象;这儿的形参是Statement类型,因为PrepareStatement是Statement的子接口,所以当实参是PrepareStatement类型的时候也没问题。
* @param conn:连接对象;
*/
public static void closeConnection(ResultSet rs, Statement stmt,Connection conn){
try {
if (rs != null) { // 如果rs != null,代表rs被实例化了,所以这儿需要关闭一下,进行释放;
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (stmt != null) { // 如果rs != null,代表stmt被实例化了,所以这儿需要关闭一下,进行释放;
stmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (conn != null && conn.isClosed() == false) { // conn.isClosed()==false代表这个连接还没有关闭,还正在使用中;
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}

最低0.47元/天 解锁文章
304

被折叠的 条评论
为什么被折叠?



