#JdbcUtil类的实现

JdbcUtil工具类的实现

将连接数据库的重复代码抽取出来写成一个工具类,便于代码的复用和精简代码。
1.配置文件
配置文件中需要包含驱动,路径,用户名,密码。就算是当这些数据有改动时,都不需要改动代码,只需要修改相应的配置文件就可以。
配置文件: jdbc.propeerties

配置文件内容

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/zzz?serverTimezone=GMT%2B8
user=root
password=123456

driver驱动如果是mysql-connector-java 5之前的版本的话就用: com.mysql.jdbc.Driver 古老版本不清楚就不赘述了,建议用最新版本!
driver驱动如果是mysql-connector-java 5之后的版本的话就用: com.mysql.cj.jdbc.Driver ,此次使用的是 8.0的版本所以选择后者。
url 格式:jdbc:数据库类型://域(本机域可以使用 / 代替)/数据库名?serverTimezone=GMT%2B8(时区)

2.JdbcUtil 工具类代码
读取配置文件中的键值对然后取出值,并注册驱动,因为以上操作仅需执行一次所以这部分就写入到静态代码块中,在程序开始执行时就处理好。

import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;

public class JdbcUtil {
	//定义静态变量
	private static String url;
    private static String user;
    private static String password;
    private static String driver;
    //使用静态代码注册驱动,给静态变量赋值
    static {
    try{
    //创建Properties集合类
	Properties pro =new Properties();
	//获取src路径下的文件,用ClassLoader类加载器
    ClassLoader classLoader =JdbcUtilFinally.class.getClassLoader();
    //URL定位文件的绝对路径
    URL res = classLoader.getResource("jdbc.properties");
    //获取路径字符串
    String path = res.getPath();
    //读取文件
    pro.load(new FileReader(path));
    //给静态变量赋值
    url = pro.getProperty("url");
    user = pro.getProperty("user");
    password = pro.getProperty("password");
    driver = pro.getProperty("driver");
    try{
    //注册驱动
    Class.forName(driver);
    }catch (ClassNotFoundException e){
                e.printStackTrace();
            }
            }catch (IOException e){
            e.printStackTrace();
            }	    
}

/*获取连接*/
	public static Connection getConnection () throws SQLException {
        return DriverManager.getConnection(url,user,password);
    }

/**
	* @Author zzz
	* @Description 资源释放
	* @Date 11:09 2020/06/09
	* @Param stmt 执行sql的对象, conn数据库连接对象
	* @return void
**/
 public static void close (Statement stmt , Connection conn) {
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
/**资源释放重载,增加ResultSet rs 的资源释放**/
    public static void close (ResultSet rs , Statement stmt , Connection conn) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

3.使用一下JdbcUtil工具类

import cn.util.JdbcUtilFinally;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TryToUseJdbcUtil {
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

        try {
        	//连接数据库
            conn = JdbcUtilFinally.getConnection();
            //用sql语句查询名为zzz的表
            String sql = "select * from zzz";
            stmt =conn.createStatement();
            rs = stmt.executeQuery(sql);

            //尝试输出
            rs.next();
            System.out.println("id:"+rs.getInt("id")+" --- name:"+ rs.getString("name"));
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
        	//资源释放
            JdbcUtilFinally.close(rs,stmt,conn);
        }
    }
}

输出结果(简易查询了表中的id 和 name):#JdbcUtil类的实现_第1张图片

Over.

你可能感兴趣的:(jdbc)