zoukankan      html  css  js  c++  java
  • 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下

    迎风少年
  • 相关阅读:
    python学习 day6 (3月7日)
    day05作业---字典
    day04 列表
    python学习 day5 (3月6日)
    python学习 day4 (3月5日)---列表
    Head First JavaScript 第九章:9 异步编码——处理事件
    Head First JavaScript 第八章:8 编写一个应用程序
    Head First JavaScript 第七章:7 类型、相等、转换等系统地讨论类型
    《深入理解C指针》第五章 指针和字符串
    Architecture of a Database System论文——第四章:关系查询处理器
  • 原文地址:https://www.cnblogs.com/ZYH-coder0927/p/13837089.html
Copyright © 2011-2022 走看看