我们可以看一下加载驱动的时候到底做了什么。以oracle jdbc驱动为例,我们可以看一下oracle.jdbc.driver.OracleDriver类中的static块代码,如下:
static
  {
    m_driverAccess.put("thin-server", "oracle.jdbc.thinserver.ServerTTC7Protocol");    m_driverAccess.put("oci-server", "oracle.jdbc.ociserver.ServerOCIDBAccess");    m_driverAccess.put("thin", "oracle.jdbc.ttc7.TTC7Protocol");
    m_driverAccess.put("oci8", "oracle.jdbc.oci8.OCIDBAccess");
    m_driverAccess.put("oci", "oracle.jdbc.oci8.OCIDBAccess");
    m_driverAccess.put("kprb", "oracle.jdbc.kprb.KprbDBAccess");    m_defaultConn = null;
    m_defaultDriver = null;    Timestamp localTimestamp = 
      Timestamp.valueOf("2000-01-01 00:00:00.0");
    try
    {
      if (m_defaultDriver == null)
      {
        m_defaultDriver = new OracleDriver();
        DriverManager.registerDriver(m_defaultDriver);
      }
    }
    catch (RuntimeException localRuntimeException)
    {
    }
    catch (SQLException localSQLException)
    {
    }
  }
其实核心代码就是这一行 DriverManager.registerDriver(m_defaultDriver); 是向DriverManager注册一个jdbc驱动。其实如果参照这个,我们也可以写一个自己的数据库驱动。希望你能看明白。如果你还想深究,你可以再看DriverManager.registerDriver的源码,直到弄明白所有的原理为止,其实多看看,你就会发现,也很简单。