多学习。

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();
                }
            }
        }
    }
}
复制代码

 

posted @   czyaaa  阅读(87)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示