• JavaEE JDBC 怎么加载驱动


    JDBC怎么加载驱动

    @author ixenos

    分析


    1.JDBC是一套连接数据库的接口(放在java.util.sql.Driver类中),不同的数据库依此接口各自实现Java连接到数据库的操作,这些具体的实现就叫做驱动

    2.当只连接一个数据库时,我们可以new 驱动对象来使用,但是当多数据库连接时,要多次创建Driver示例,多次创连接Connection,有些繁琐,这时,sun提供了一个驱动的管理器DriverManager,注册驱动就可以调用;

    3.但是每次还是要创Driver实例,然后都进行注册,而且可能重复注册,怎么办?jdbc驱动的实现者就把新建实例驱动注册的操作包裹为一个static块(在类加载连接初始化时运行,且只运行一次),这样加载驱动时就执行这些操作了,这也就是为什么只用Class.forName的由来。

    com.mysql.jdbc.Driver对加载驱动的实现


       com.mysql.jdbc.Driver把DriverManager的注册放在了静态块中

    代码


    import java.sql.Connection;
    
    import java.sql.Driver;
    
    import java.sql.DriverManager;
    
    import java.util.Properties;
    
     
    
    import org.junit.Test;
    
    /**
    
     * jdbc连接数据库
    
     * @author ixenos
    
     *
    
     */
    
    public class Demo1 {
    
          //连接数据库的URL
    
          private String url = "jdbc:mysql://localhost:3306/day17";
    
                              // jdbc协议:数据库子协议:主机:端口/连接的数据库   //
    
     
    
          private String user = "root";//用户名
    
          private String password = "root";//密码
    
         
    
          /**
    
           * 第一种方法
    
           * @throws Exception
    
           */
    
          @Test
    
          public void test1() throws Exception{
    
               //1.创建驱动程序类对象
    
               Driver driver = new com.mysql.jdbc.Driver(); //新版本
    
               //Driver driver = new org.gjt.mm.mysql.Driver(); //旧版本
    
              
    
               //设置用户名和密码
    
               Properties props = new Properties();
    
               props.setProperty("user", user);
    
               props.setProperty("password", password);
    
              
    
               //2.连接数据库,返回连接对象
    
               Connection conn = driver.connect(url, props);
    
              
    
               System.out.println(conn);
    
          }
    
         
    
          /**
    
           * 使用驱动管理器类连接数据库(注册了两次,没必要)
    
           * @throws Exception
    
           */
    
          @Test
    
          public void test2() throws Exception{
    
               Driver driver = new com.mysql.jdbc.Driver();
    
               //Driver driver2 = new com.oracle.jdbc.Driver();
    
               //1.注册驱动程序(可以注册多个驱动程序)
    
               DriverManager.registerDriver(driver);
    
               //DriverManager.registerDriver(driver2);
    
              
    
               //2.连接到具体的数据库
    
               Connection conn = DriverManager.getConnection(url, user, password);
    
               System.out.println(conn);
    
              
    
          }
    
         
    
          /**
    
           * (推荐使用这种方式连接数据库)
    
           * 推荐使用加载驱动程序类  来 注册驱动程序
    
           * @throws Exception
    
           */
    
          @Test
    
          public void test3() throws Exception{
    
               //Driver driver = new com.mysql.jdbc.Driver();
    
              
    
               //通过得到字节码对象的方式加载静态代码块,从而注册驱动程序
    
               Class.forName("com.mysql.jdbc.Driver");
    
              
    
               //Driver driver2 = new com.oracle.jdbc.Driver();
    
               //1.注册驱动程序(可以注册多个驱动程序)
    
               //DriverManager.registerDriver(driver);
    
               //DriverManager.registerDriver(driver2);
    
              
    
               //2.连接到具体的数据库
    
               Connection conn = DriverManager.getConnection(url, user, password);
    
               System.out.println(conn);
    
              
    
          }
    
     
    
    }
    

      

  • 相关阅读:
    JAVA课程设计——飞机大战(团队)
    面向对象设计大作业
    OO之接口-DAO模式代码阅读及应用
    有理数类设计
    图总结
    树、二叉树、查找算法总结
    二叉排序树
    数据结构小结
    C语言文件
    小程序云开发:联表查询去重及排序的不严谨笨办法
  • 原文地址:https://www.cnblogs.com/ixenos/p/6291952.html
Copyright © 2020-2023  润新知