JDBC代码封装(JDBC-Utils)

如何做?

1.创建jdbc.properties属性文件,写上driverClass、url、user、password信息。
2.创建一个用来封装JDBC代码的类(JDBC_Utils)
3.静态代码块中写注册驱动,然后封装获取Connection的方法,最后封装dml资源的关闭以及dql资源的关闭。
4.创建一个类来测试代码。

1.创建jdbc.properties属性文件,写上driverClass、url、user、password信息。
在这里插入图片描述
代码:

driverClass=com.mysql.jdbc.Driver
//向MySQL导入数据可能会出现乱码问题,所以手动将编码改成utf-8
url=jdbc:mysql://localhost:3306/dbtest?UserUnicode=true&characterEncoding=utf-8
user:root
password:root

2.创建一个用来封装JDBC代码的类(JDBC_Utils)
3.静态代码块中写注册驱动,然后封装获取Connection的方法,最后封装dml资源的关闭以及dql资源的关闭。

代码:

package com.company;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;

public class JDBC_Utils {
    //创建一个属性文件对象
    public static Properties properties=new Properties();
    //驱动加载在整个程序中只加载一次,所以放到静态语句块中
    static {
        FileInputStream fileInputStream=null;
        try {
            //创建一个文件输出流对象,读取文件
            fileInputStream=new FileInputStream("./src/jdbc.properties");
            //加载到属性文件中
            properties.load(fileInputStream);
            //属性文件调用getProperty方法传递关键字得到属性值
            String driverClass = properties.getProperty("driverClass");
            Class.forName(driverClass);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            if(fileInputStream!=null){
                try {
                    fileInputStream.close();  //流开了要关
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    //获取连接
    public static Connection getConnection()  {
        String url=properties.getProperty("url");
        String user=properties.getProperty("user");
        String password=properties.getProperty("password");
        Connection connection= null;
        try {
            connection = DriverManager.getConnection(url,user,password);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return connection;
    }
    //DML关闭资源
    public static void  closeResource(Connection conn, Statement stat){
        try {
            if(stat!=null){
                stat.close();
            }
            if(conn!=null){
                conn.close();
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
    //DQL关闭资源
    public  static void closeResource(Connection conn, Statement stat, ResultSet set){
        try {
            if (set!=null){
                set.close();
            }
            if(stat!=null){
                stat.close();
            }
            if(conn!=null){
                conn.close();
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}

4.创建一个类来测试代码。

package com.company;

import org.junit.Test;

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

public class Utils_test {
    @Test
     public void insert() throws SQLException {
        Connection connection=JDBC_Utils.getConnection();
        PreparedStatement stat=connection.prepareStatement("insert into dd value (null,?,?,?)");
        stat.setObject(1,"钟杭冲");
        stat.setObject(2,"男");
        stat.setObject(3,15);
        int row=stat.executeUpdate();
        System.out.println(row>0?"添加成功":"添加失败");
        JDBC_Utils.closeResource(connection,stat);
    }

}

结果展示:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值