JDBCUtils工具类的创建和使用

为了简化JDBC的注册驱动、创建连接对象等操作,可以使用JDBC工具类以及配置文件。

  • 配置文件
url = jdbc:mysql://localhost:3308/db4?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
user = root
password = 123456
driver = com.mysql.cj.jdbc.Driver
  • JDBCUtils工具类
package utils;

import java.io.FileInputStream;
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 driver;
    /**
     * 文件的读取,只需要读取一次即可拿到这些值,使用静态代码块
     */
    static {
        // 读取资源文件,获取值。
        try {
            // 创建Properties集合类
            Properties pr = new Properties();
            // 获取src路径下文件的方式--->Classloader 类加载器
            ClassLoader classLoader = JDBCUtils.class.getClassLoader();
            // res定位了“jdbc.properties"文件的绝对路径
            URL res = classLoader.getResource("jdbc.properties");
            // 获取res的字符串路径
            String path = res.getPath();
            System.out.println(path);
            // 加载文件
            //pr.load(new FileInputStream("src/jdbc.properties"));
            pr.load(new FileReader(path));
            // 获取数据,赋值
            url = pr.getProperty("url");
            user = pr.getProperty("user");
            password = pr.getProperty("password");
            driver = pr.getProperty("driver");
            // 注册驱动
            Class.forName(driver);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取连接
     * @return 连接对象
     */
    public static Connection getConnection() throws SQLException {

        return DriverManager.getConnection(url,user,password);
    }

    /**
     * 释放资源
     * @param stmt1
     * @param conn
     */
    public static void close(Statement stmt1, Statement stmt2, Connection conn){
        if (stmt1!=null){
            try {
                stmt1.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

        if (stmt2!=null){
            try {
                stmt2.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

        if (conn!=null){
            try {
                conn.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }

    /**
     * 释放资源
     * @param rs
     * @param stmt
     * @param conn
     */
    public static void close(ResultSet rs,Statement stmt, Connection conn){
        if (stmt!=null){
            try {
                stmt.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

        if (conn!=null){
            try {
                conn.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

        if (rs!=null){
            try {
                rs.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }

}

  • 事务操作
package jdbc;

import utils.JDBCUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * 事务操作
 */
public class JDBCDemo7 {
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement ps1 = null;
        PreparedStatement ps2 = null;
        ResultSet rs = null;
        try {
            //获取连接
            conn = JDBCUtils.getConnection();
            // 定义sql
            String sql1 = "update account set balance = balance - ? where id = ?";
            String sql2 = "update account set balance = balance + ? where id = ?";
            // 获取执行sql对象
            ps1 = conn.prepareStatement(sql1);
            ps2 = conn.prepareStatement(sql2);
            // 设置参数
            ps1.setInt(1,500);
            ps1.setInt(2,1);
            ps2.setInt(1,500);
            ps2.setInt(2,2);
            // 执行sql
            ps1.executeUpdate();
            ps2.executeUpdate();



        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            JDBCUtils.close(ps1,ps2,conn);
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值