JDBC 通过DriverManager 获取数据库连接

时间:2022-03-08 02:58:10
    @Test
    public void testGetConnection2() throws Exception {
        System.out.println(getConnection2());
    }
    
    
    public Connection getConnection2() throws Exception {
        // 1. 准备连接数据库的 4  个字符串
        // 1) 创建 Properties 对象
        Properties properties = new Properties();
        
        // 2) 获取 jdbc.properties 对应的输入流
        InputStream in = this.getClass().getClassLoader().getResourceAsStream("jdbc.properties");
        
        // 3)加载 2)对应的输入流
        properties.load(in);
        
        // 4) 具体决定 user password 等 4 个字符串
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        String jdbcUrl = properties.getProperty("jdbcUrl");
        String driver = properties.getProperty("driver");
        
        // 2. 加载 数据库驱动程序(对应的Driver 实现类中有注册驱动的静态代码块 )
        Class.forName(driver);
        
        // 3. 通过 DriverManager 的getConnection() 方法获取数据库连接
        return DriverManager.getConnection(jdbcUrl, user, password);
    }
    

    /*
     * DriverManager 是驱动的管理类。
     * 1) 可以通过重载的 getConnection() 方法获取数据库连接,较为方便
     * 2)可以同时管理多个驱动程序: 若注册了多个数据库连接,则调用getConnetcion() 
     *  方法时传入的参数不同,即返回不同的数据库连接
     * 
     * 
     */
    
    @Test
    public void testDriverManager() throws Exception {
        //1. 准备连接数据库的 4 个字符串。
        // 驱动的全类名。
        String driverClass = "com.mysql.cj.jdbc.Driver";
        // JDBC URL
        String jdbcUrl = "jdbc:mysql:///myemployees?serverTimezone=UTC"; 
        // jdbc:mysql://localhost:3306/myemployees 
        // 如果是 localhost 的时候,可以省略掉
        
        // user
        String user = "root";
        //password
        String password = "0212";
    
        
        // 加载数据库驱动程序(对应的 Driver 实现类中有 注册驱动 的静态代码块 )
        // DriverManager.registerDriver(Class.forName(driverClass).newInstance());
        // DriverManager好处: 可以来注册多个驱动程序
        Class.forName(driverClass);
        // 反射
        
        // 3. 通过DriverManager 的getConnection() 方法获取数据库连接。
        Connection connection = 
                DriverManager.getConnection(jdbcUrl, user, password);
        // 比 Driver 更方便
        
        System.out.println(connection);
        
        
    }