DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
Class.forName("com.mysql.cj.jdbc.Driver");
这两个是加载驱动还是注册驱动?

解决方案 »

  1.   

    这两个方式效果一致,都是注册驱动.
    class.forName触发Driver的类加载, 过程中会执行Driver中的静态代码块进行驱动注册静态代码如下
        static {
            try {
                java.sql.DriverManager.registerDriver(new Driver());
            } catch (SQLException E) {
                throw new RuntimeException("Can't register driver!");
            }
        }
      

  2.   

    理论上没什么不同,都是为了执行Driver里的静态代码块
    关于你的第二种说法,我昨天在博客里刚吐槽过
    https://blog.csdn.net/qq_38709999/article/details/96368345