JDBC工具类

建立一个文件名为jdbc.properties,放在src目录下,文件内容如下(也可用Properties类load方法写入):

#\u914D\u7F6E\u6587\u4EF6\u83B7\u53D6Connection
#Wed Nov 10 16:54:59 CST 2021
password=数据库密码
driver=com.mysql.jdbc.Driver
user=用户名
url=jdbc\:mysql\://ip地址\:数据库端口号/数据库名

 

工具类代码:

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

public class JDBCUtils {
    private static String url;
    private static String user;
    private static String password;
    private static String driver;

    /**
     * 文件的读取,读取配置文件的值
     */
    static{
        Properties prop = new Properties();
        try {

            //获取src路径下的文件方式-->ClassLoader 类加载器
            ClassLoader classLoader = JDBCUtils.class.getClassLoader();
            URL res = classLoader.getResource("jdbc.properties");
            String path = res.getPath();
            //System.out.println(path);

            prop.load(new FileReader(path));
            user = prop.getProperty("user");
            url = prop.getProperty("url");
            password = prop.getProperty("password");
            //Class.forName(prop.getProperty("driver")); mysql5后已无需手动注册
        }catch(IOException e){
            e.printStackTrace();
        }
    }

    /*
     * 用于写入配置文件
     * @param args

    public static void main(String[] args) throws IOException {
        FileWriter fos = new FileWriter("配置文件路径");
        Properties prop = new Properties();
        prop.setProperty("url","jdbc:mysql://ip地址:端口号/数据库名");
        prop.setProperty("user","用户名");
        prop.setProperty("password","数据库密码");
        prop.setProperty("driver","com.mysql.jdbc.Driver");
        prop.store(fos,"配置文件获取Connection");fos.close();
    }
     */

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

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

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

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

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

        if(stm != null){
            try{
                stm.close();
            }catch(SQLException e){
                e.printStackTrace();
            }
        }

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

    /**
     * 在执行DQL语句有ResultSet的情况下
     * 面对多个Statement与多个PreparedStatement对象时,释放资源
     * @param conn
     * @param result
     * @param stms
     */
    public static void close(Connection conn,ResultSet result,Statement...stms){
        if(result != null){
            try{
                result.close();
            }catch(SQLException e){
                e.printStackTrace();
            }
        }

        //释放Statement资源
        for(Statement t : stms){
            if(t != null){
                try{
                    t.close();
                }catch (SQLException e){
                    e.printStackTrace();
                }
            }
        }

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

    /**
     * 在执行DDL与DML无ResultSet的情况下
     * 面对多个Statement对象释放资源
     * @param conn
     * @param stms
     */
    public static void close(Connection conn,Statement...stms){
        for(Statement t : stms){
            if(t != null){
                try{
                    t.close();
                }catch(SQLException e){
                    e.printStackTrace();
                }
            }

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

 

上一篇:Golang之channel操作


下一篇:JDBC工具类