Dan*_*ski 20 java jdbc classloader
我在示例应用程序中看到了使用商业JDBC驱动程序的这一行:
Class.forName("name.of.a.jcdb.driver")
Run Code Online (Sandbox Code Playgroud)
不使用返回值.
这条线的目的是什么?
Noo*_*ilk 25
它执行该类的静态加载.所以static { }块中的任何东西都会运行.
ZZ *_*der 12
也许一些代码片段会有所帮助.这是来自Sun的JDBC-ODBC桥驱动程序,
//--------------------------------------------------------------------
// Static method to be executed when the class is loaded.
//--------------------------------------------------------------------
static
{
JdbcOdbcTracer tracer1 = new JdbcOdbcTracer();
if (tracer1.isTracing ()) {
tracer1.trace ("JdbcOdbcDriver class loaded");
}
JdbcOdbcDriver driver = new JdbcOdbcDriver ();
// Attempt to register the driver
try {
DriverManager.registerDriver (driver);
}
catch (SQLException ex) {
if (tracer1.isTracing ()) {
tracer1.trace ("Unable to register driver");
}
}
}
Run Code Online (Sandbox Code Playgroud)
DriverManager.registerDriver()每当加载驱动程序时,都会执行静态块中的调用Class.forName().
这曾经是注册驱动程序的唯一方法.JDBC 4.0引入了一种新的服务注册机制,因此您不再需要使用较新的JDBC 4.0兼容驱动程序.
| 归档时间: |
|
| 查看次数: |
6121 次 |
| 最近记录: |