zoukankan      html  css  js  c++  java
  • 连接和关闭资源工具类

    做一个工具类,里面封装了两个方法,一个用来获得连接,一个用来关闭资源

    package com.sjx.tool;
    
    import java.io.FileInputStream;
    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;
    
    public class JDBCUtils {
        private static String driver;
        private static String url;
        private static String user;
        private static String password;
        
        
        
        static{
            
            try {
                //0读取配置文件
                Properties prop  = new Properties();
                
                InputStream is = new FileInputStream("src/db.properties");
                
                
                prop.load(is);
                
                is.close();
                
                driver = prop.getProperty("driver");
                url = prop.getProperty("url");
                user = prop.getProperty("user");
                password = prop.getProperty("password");
                
                //1 注册驱动
                Class.forName(driver);
            } catch (Exception e) {
                e.printStackTrace();
            }
            
        }
        
        //1 获得连接
        public static Connection getConnection(){
            Connection conn = null;
            try {
                //2 获得连接
                conn = DriverManager.getConnection(url, user, password);
            } catch (Exception e) {
                e.printStackTrace();
                throw new RuntimeException("创建连接失败!");
            }
            
            return conn;
        }
        
        //2 释放资源
            //1> 参数可能为空
            //2> 调用close方法要抛出异常,确保即使出现异常也能继续关闭
            //3>关闭顺序,需要从小到大
        public  static void  close(Connection conn , Statement st , ResultSet rs){
            
            try {
                if(rs!=null){
                    rs.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }finally{
                try {
                    if(st!=null){
                    st.close();    
                    }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }finally{
                    try {
                        if(conn!=null){
                            conn.close();    
                            }
                    } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                
            }
            
        }
        
        
        public static void main(String[] args) {
            System.out.println(getConnection());  //本机安装的数据库能接受的连接数是极少的,所以少执行几次
        }
    }
  • 相关阅读:
    6.Ray-消息订阅器编写
    附录:2-Event Sourcing pattern (事件溯源设计模式)
    附录:1-Grain生命周期-译注
    4.Ray-Handler之CoreHandler编写
    Q&A-20180128
    TODO
    3.Ray-Event编写
    缓存技术内部交流_01_Ehcache3简介
    Spring AMQP 源码分析 04
    Spring AMQP 源码分析 03
  • 原文地址:https://www.cnblogs.com/sjxbg/p/5819080.html
Copyright © 2011-2022 走看看