JDBC------之获连接对象

我们要通过JDBC操作数据库,那么最基本的条件就是首先获得与数据库的连接,接下来简述获取数据库连接的几种逐级演化的方式,当然,在这几种方式中我们最常使用的是最后一种。

获取数据库连接对象的方式1:

代码演示:

    private static void methodOne() throws SQLException {
        //获取连接的第一种方式

        //1.javax包下的Driver类的对象的创建实现对不同数据库厂商的驱动的加载
        Driver driver=new com.mysql.jdbc.Driver();
        //根据driver对象获得连接对象

        Properties properties=new Properties();
        properties.setProperty("user","root");
        properties.setProperty("password","123456");


        Connection connect = driver.connect("jdbc:mysql://localhost:3306/db1", properties);
        System.out.println(connect);
        connect.close();
    }

我们来分析一下上面的代码:

Driver driver=new com.mysql.jdbc.Driver();

上面的代码中两个Driver是不同的,蓝色的Driver是sun公司制定的数据库厂商实现驱动的接口,橙色的Driver是MySql数据库根据sun公司制定的Driver接口的实现类,在我们创建Driver对象的时候,我们就已经实现了MySql数据库的驱动的加载和注册,我们可以查看一下Driver类的源码:

获取数据库连接对象的方式2:

代码如下:

    private static void methodTwo() throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException {
        //第二种方式:
//        使用反射的方式获得Driver对象
        Class clazz = Class.forName("com.mysql.jdbc.Driver");
        Driver driver = (Driver) clazz.newInstance();   //驱动中的Driver类实现了java.sql中的Driver接口

        //通过Driver对象获得连接对象
        Properties properties=new Properties();
        properties.setProperty("user","root");
        properties.setProperty("password","123456");
        Connection connect = driver.connect("jdbc:mysql://localhost:3306/db1", properties);
        System.out.println(connect);
        connect.close();
    }

通过第一种方式我们知道,在Driver类被加载的时候MySql的驱动就会被注册,所以我们不需要通过new的方式创建Driver类的对象。

获取数据库连接对象的方式3:

代码如下:

    private static void methodThree() throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException {
        //第三种方式:使用DriverManager替代Driver
        Class clazz = Class.forName("com.mysql.jdbc.Driver");//使用DriverManager类获得连接对象
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1", "root", "123456");
        System.out.println(connection);
        connection.close();
    }

以为我们不再使用Driver类的独享获取连接对象,所以不需要再创建driver类的对象。

获取数据库连接对象的方式4:

代码如下:

    private static void methodFive() throws SQLException {
        //第五种方式:
        //不用手动加载Driver类,直接获得连接对象,但是这种方式不建议使用,因为如果是其他的数据库可能就不会支持这一种方法

        //不用手动加载的原因是在mysql的驱动jar包中含有META-INF.service.java.sql.Driver文件有驱动中Driver类中的全类名
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1", "root", "123456");
        System.out.println(connection);
        connection.close();
    }

这种方式的通用性差,有的数据库厂商并不支持这一种方式,所以不建议省略类加载的过程。

获取数据库连接对象的方式5:

public class TestJDBC {
    public static void main(String[] args) throws Exception {

      //最终方式:加载配置文件的方式
        InputStream is = TestJDBC.class.getClassLoader().getResourceAsStream("jdbc.properties");
        Properties prop=new Properties();
        prop.load(is);
        String driverClass = prop.getProperty("driverClass");
        String url = prop.getProperty("url");
        String user = prop.getProperty("user");
        String password = prop.getProperty("password");

        //加载驱动
        Class.forName(driverClass);//加载驱动里面包含了注册驱动

        //获取连接对象

        Connection connection = DriverManager.getConnection(url, user, password);
        System.out.println(connection);
        connection.close();


    }

在实际的开发中我们常常将Driver类的类路径,连接的数据库服务的地址,用户名,密码单独的写在一个配置文件中,使用加载配置文件的方式获得相应的信息,这样有利于程序的开发。

值得注意的是:类加载器加载文件的默认路径是类路径下,也就是src下

迎风少年
原文地址:https://www.cnblogs.com/ZYH-coder0927/p/13837089.html