java learnging

          一塊探討JAVA的奧妙吧
          posts - 34, comments - 27, trackbacks - 0, articles - 22

          JDBC學習--JDBC驅動程序

          Posted on 2005-01-15 00:51 bigseal 閱讀(723) 評論(0)  編輯  收藏

          JDBC驅動程序

          JDBC通過一系列接口來訪問數據庫,而這些接口的實現則是由不同的數據庫廠商或組織實現的。要實現對某一特定類型數據庫的訪問就要通過注冊JDBC驅動程序來讓程序知道去哪里調用JDBC API 接口的實現。

          先看下面的一段程序:

          Class.froName("com.mysql.jdbc.Driver").newInstance();//加載類并初始化這個類的靜態初始化部分
          String url = "jdbc:mysql://localhost:3306/math";               //數據庫URL
          String userName = "root";                                                     //連接數據庫的用戶名
          String password = "password";                                            //密碼
          Connection oConn = DriverManager.getConnection(url,userName,password);//建立數據庫連接

          java.sql.DriverManager:從名字就可以看出是用于驅動程序管理的,它的主要責任是保留一個驅動程序的列表,并通過getConnection方法來給應用程序提供與所請求的URL相匹配的Driver(可能是由于同一個數據庫的驅動程序可能是有幾種不同的實現方式,但如果DriverManager中對一個URL有多個匹配的Driver,它是不是只選擇第一個找到的呢?),并返回Connection對象,如果找不到就會拋出一個異常,也就是這一句 Connection oConn = DriverManager.getConnection(url,userName,password)。同時還提供了registerDriver()和deregisterDriver(),這兩個方法允許驅動程序的工具用DriverManager注冊驅動程序或從列表中刪除。可以感覺出是在用Class.froName("com.mysql.jdbc.Driver").newInstance();加載類并初始化這個類的靜態初始化部分時調用registerDriver()的方法注冊的,我在mysql驅動程序的源碼的Driver類中找到對這個方法的調用。

          package com.mysql.jdbc;
          public class Driver extends NonRegisteringDriver 
          {
            

              
          //

              
          // Register ourselves with the DriverManager
              
          //
              static 
          {
                  
          try 
          {
                      java.sql.DriverManager.registerDriver(
          new
           Driver());
                  }
           catch (java.sql.SQLException E) {
                      
          throw new RuntimeException("Can't register driver!"
          );
                  }


                  
          if (DEBUG) {
                      Debug.trace(
          "ALL"
          );
                  }

              }


              
          /**
               * Construct a new driver and register it with DriverManager
               *
               * @throws java.sql.SQLException if a database error occurs.
               
          */

              
          public Driver() throws java.sql.SQLException {
                  
          // Required for Class.forName().newInstance()

              }

          }

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 宁化县| 略阳县| 时尚| 阳高县| 都匀市| 麻阳| 中江县| 白水县| 买车| 盐津县| 仁怀市| 齐河县| 湘乡市| 湖南省| 巴林左旗| 北京市| 青神县| 汾阳市| 合水县| 江安县| 买车| 汕头市| 徐水县| 邵东县| 黄骅市| 樟树市| 弥勒县| 香港 | 麻栗坡县| 万源市| 武清区| 垦利县| 吉木乃县| 肥东县| 喀什市| 富裕县| 高州市| 大城县| 普兰店市| 潢川县| 綦江县|