JDBC 封装成工具包使用

前言:

JDBC编程6步:

第一步:注册驱动(作用:告诉Java程序,即将要连接的是哪个品牌的数据库)
第二步:获取连接( 表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,重量级的,使用完之后一定要关闭通道)
第三步:获取数据库操作对象(专门执行sq1语句的对象)
第四步:执行SQL语句(DQL DML ....)
第五步:处理查询结果集(只有当第四步执行的是select语句的时候,才有这第五步处理查询结果集。)
第六步:释放资源( 使用完资源之后一定要关闭资源。Java和数据库属于进程间的通信,开启之后一定要关闭。)

  我们在使用JDBC连MySql的时候可以发现写重复的代码是非常痛苦的,所以我这里把它封装成一个工具类进行使用,简化代码!

编写配置文件信息:

注意:最好将jdbc.properties配置文件放在项目的src目录下,以便能够正常通过代码找到

#编写配置文件信息
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/donglijiedian
name=root
passwd=zhixi158

封装:

import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class JUtil {
    private static String driver = null;
    private static String url = null;
    private static String name = null;
    private static String passwd = null;

    //1、注册驱动(只需要一次)
    static {
        try {
            //1、获取到流文件
            InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("jdbc.properties");
            //2、加载流文件
            Properties properties = new Properties();
            properties.load(is);

            driver = properties.getProperty("driver");
            url = properties.getProperty("url");
            name = properties.getProperty("name");
            passwd = properties.getProperty("passwd");

            //3、注册驱动
            Class.forName(driver);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //4、获取连接
    public Connection getCollection() throws SQLException {
        return DriverManager.getConnection(url, name, passwd);
    }

    //5、关闭流
    public void close(Connection conn, Statement s, ResultSet rs) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (s != null) {
            try {
                s.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

测试:

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

public class 包装类测试文件 {
    public static void main(String[] args) {
        //1、注册驱动(会执行静态代码块)
        JUtil util = new JUtil();

        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
        try {
            //2、获取连接
            conn = util.getCollection();
            //3、获取数据库操作对象
            st = conn.createStatement();
            //4、执行SQL
            String sql = "select * from emp";
            rs = st.executeQuery(sql);
            //5、处理查询结果集
            while (rs.next()) {
                String s1 = rs.getString(1);
                String s2 = rs.getString(2);
                String s3 = rs.getString(3);
                String s4 = rs.getString(4);
                String s5 = rs.getString(5);
                String s6 = rs.getString(6);
                String s7 = rs.getString(7);
                String s8 = rs.getString(8);
                System.out.println(s1 + " " + s2 + " " + s3 + " " + s4 + " " + s5 + " " + s6 + " " + s7 + " " + s8);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //6、释放资源
            util.close(conn, st, rs);
        }
    }
}

 可以看到正常连接数据库执行代码!

原文地址:https://www.cnblogs.com/zhangzhixi/p/14109624.html