java learnging

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

          JDBC學習--JDBC驅動程序

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

          JDBC驅動程序

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

          先看下面的一段程序:

          Class.froName("com.mysql.jdbc.Driver").newInstance();//加載類并初始化這個類的靜態(tài)初始化部分
          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(可能是由于同一個數據庫的驅動程序可能是有幾種不同的實現(xiàn)方式,但如果DriverManager中對一個URL有多個匹配的Driver,它是不是只選擇第一個找到的呢?),并返回Connection對象,如果找不到就會拋出一個異常,也就是這一句 Connection oConn = DriverManager.getConnection(url,userName,password)。同時還提供了registerDriver()和deregisterDriver(),這兩個方法允許驅動程序的工具用DriverManager注冊驅動程序或從列表中刪除。可以感覺出是在用Class.froName("com.mysql.jdbc.Driver").newInstance();加載類并初始化這個類的靜態(tài)初始化部分時調用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()

              }

          }

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


          網站導航:
           
          主站蜘蛛池模板: 吕梁市| 桃源县| 辉县市| 航空| 淮北市| 涪陵区| 廊坊市| 柯坪县| 甘孜| 盐池县| 罗定市| 杭州市| 滦平县| 敦煌市| 鹤峰县| 夏河县| 鄄城县| 长阳| 吉安市| 府谷县| 泗阳县| 邵东县| 金昌市| 巴楚县| 吴桥县| 肇源县| 鄢陵县| 炉霍县| 黄冈市| 廉江市| 南川市| 淅川县| 邹城市| 竹溪县| 湘乡市| 赞皇县| 长宁县| 漯河市| 读书| 洛南县| 海盐县|