ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JDBC工具类

2021-11-10 21:00:15  阅读:193  来源: 互联网

标签:JDBC param prop try SQLException close 工具 conn


建立一个文件名为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();
                }
            }
        }
    }
}

 

标签:JDBC,param,prop,try,SQLException,close,工具,conn
来源: https://www.cnblogs.com/czy-algorithm/p/15535635.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有