JDBC入门八:封装一个DbUtils工具类;以及新增、更新、删除数据;(这三个操作均采用PreparedStatement)

本篇博客还是沿用JDBC入门五:一个按部门查询员工功能的例子这篇博客中的接口:

本篇博客篇幅很长,但核心内容就3点:(1)DbUtils;(2)【新增、更新、删除数据】的方法;(3)整体的包结构和类组织的套路;

目录

一.封装DbUtils工具类:

二:新增、更新、删除实现 

1.新增(写操作):InsertCommand类

2.更新:UpdateCommand类

3.删除:DeleteCommand类

4.Command接口内容

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();
        }
    }

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值