zoukankan      html  css  js  c++  java
  • JDBC中链接数据库前为什么要用Class.forName(驱动类)加载驱动类?

    使用JDBC链接数据库时,为什么要先使用Class.forName(String name)来加载类?

    答:

    实际上就是为了加载类时,调用静态初始化块中的注册函数。

    可以看一下MySql的Driber类源码

    1.    class Driver extends NonRegisteringDriver implements java.sql.Driver {  
    2.        // ~ Static fields/initializers  
    3.        // ---------------------------------------------  
    4.      
    5.        //  
    6.        // Register ourselves with the DriverManager  
    7.        //  
    8.        static {  
    9.            try {  
    10.                java.sql.DriverManager.registerDriver(new Driver());  
    11.            } catch (SQLException E) {  
    12.                throw new RuntimeException("Can't register driver!");  
    13.            }  
    14.        }  
    15.      
    16.        // ~ Constructors  
    17.        // -----------------------------------------------------------  
    18.      
    19.        /** 
    20.         * Construct a new driver and register it with DriverManager 
    21.         *  
    22.         * @throws SQLException 
    23.         *             if a database error occurs. 
    24.         */  
    25.        public Driver() throws SQLException {  
    26.            // Required for Class.forName().newInstance()  
    27.        }  
    28.    }  

    可以看到在第10行代码,也就是静态初始化块中,的代码是用于注册驱动的。

    所以用Class.forName实际上就是为了调用这个注册驱动的方法。

    当然我们也可以直接调用DriverManager类中的registerDriver(new com.mysql.jdbc.Driver())来进行驱动的注册,这样就不用Class.forName了。

  • 相关阅读:
    完整java开发中JDBC连接数据库代码和步骤
    2007最后一贴
    ajax数据加载经验分享
    vs2008中文版提供下载(包含中文msdn)
    修改服务器控件的ID和Name
    你使用控件吗?会用吗?
    自定义控件集
    asp.net控件开发基础示例代码打包
    javascript好文章收藏
    wpf学习笔记简单绑定
  • 原文地址:https://www.cnblogs.com/qingergege/p/8202379.html
Copyright © 2011-2022 走看看