我们可以看一下加载驱动的时候到底做了什么。以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的源码,直到弄明白所有的原理为止,其实多看看,你就会发现,也很简单。
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的源码,直到弄明白所有的原理为止,其实多看看,你就会发现,也很简单。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货