如果不使用返回值,Class.forName() 有什么用途?
2022-09-02 02:47:03
我在使用商业 JDBC 驱动程序的示例应用程序中看到过以下行:
Class.forName("name.of.a.jcdb.driver")
不使用返回值。
这条生产线有什么用途?
我在使用商业 JDBC 驱动程序的示例应用程序中看到过以下行:
Class.forName("name.of.a.jcdb.driver")
不使用返回值。
这条生产线有什么用途?
它执行该类的静态加载。所以块里的任何东西,都会运行。static { }
也许一些代码片段会有所帮助。这是来自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");
}
}
}
每当通过 加载驱动程序时,都会执行静态块中的调用。DriverManager.registerDriver()
Class.forName()
这曾经是注册驱动程序的唯一方法。JDBC 4.0 引入了新的服务注册机制,因此您不再需要使用较新的 JDBC 4.0 兼容驱动程序执行此操作。