使用java读取properties连接数据库

2019-05-03  本文已影响0人  白云的离殇

将数据库的驱动、url、用户名、密码等信息以键值对的形式存放在properties文件中,工具类初始化时从配置文件中读取所要连接数据库的信息。当需要更改连接的数据库时,只需要更改配置文件即可,而不必改写工具类的代码。

1.在项目中创建一个properties文件,properties文件中的配置文件为,此处为mysql

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/TestDB?useUnicode=true&characterEncoding=utf8&useSSL=false
jdbc.username=root
jdbc.password=123456

2.新建一个数据库DBUtil工具类

package com.sdl.dbutil;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/*
 * 通过读取Properties连接数据库
 */
public class DBUtil {
    private static String driver;
    private static String url;
    private static String username;
    private static String password;
    /**
     * 静态代码块加载配置文件信息
     */
    static {
        try {
            // 1.通过当前类获取类加载器
            ClassLoader classLoader = DBUtil.class.getClassLoader();
            // 2.通过类加载器的方法获得一个输入流
            InputStream in = classLoader.getResourceAsStream("jdbc.properties");
            // 3.创建一个properties对象(集合)
            Properties props = new Properties();
            // 4.加载输入流
            props.load(in);
            // 5.获取相关参数的值
            driver = props.getProperty("jdbc.driver");
            url = props.getProperty("jdbc.url");
            username = props.getProperty("jdbc.username");
            password = props.getProperty("jdbc.password");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    //注册并获取数据库连接
        public static Connection getConnection() throws Exception{
            //1.注册驱动
            Class.forName(driver);
            //2.获取数据库连接
            Connection coon =  DriverManager.getConnection(url, username, password);
            return coon;
        }
        
            /**
     * 释放数据库资源
     * @param rs
     * @param st
     * @param co
     */
    public static void relase(ResultSet rs, Statement st, Connection co) {
        try {
            if(rs != null) {
                rs.close();
            }
            if(st != null) {
                st.close();
            }
            if(co != null) {
                co.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }               
}

4.测试一下,新建一个测试类DBUtilTest

package com.sdl.dbutil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class DBUtilTest{
    
    public static void main(String[] args) throws Exception{        
        Connection coon = DBUtil.getConnection();
        //2.书写SQL语句
        String sql = "select * from user";
        //3.获取SQL语句预编译对象
        PreparedStatement ps = coon.prepareStatement(sql);
        //4.执行SQL语句
        ResultSet rs = ps.executeQuery();
        //5.处理结果集
        while(rs.next()){
            System.out.println(rs.getInt("uid")+"  "+rs.getString("username"));
        }
        //6.释放资源
        DBUtil.relase(rs, ps, coon);
        
    }   
}

5.测试结果

运行结果
上一篇下一篇

猜你喜欢

热点阅读