在加载jdbc:odbc驱动程序时,Class类中的forName()方法做了什么?

时间:2012-11-23 16:49:47

标签: java database jdbc odbc driver

我正在学习如何使我的Java应用程序与MS Access数据库进行通信。

我不确定一个方法,即Class.forName()方法。我传递的参数是“sun.jdbc.odbc.JdbcOdbcDriver”,它加载用于访问数据库的jdbc:odbc桥。

Class.forName()究竟做了什么,为什么需要它?

非常感谢。

4 个答案:

答案 0 :(得分:7)

Class.forName()导致ClassLoader将类加载到内存中。 JDBC驱动程序类具有静态初始化程序,它们使用DriverManager注册它们以供进一步使用。使用Class.forName()并使用DriverManager.getConnection("jdbc:*", database, username, password)后,jdbc:已加载到内存中。

答案 1 :(得分:1)

Class.forName()用于动态加载类。例如,您调用了Class.forName("z"),这将导致类z被初始化并返回相应的对象。

答案 2 :(得分:0)

Class.forName()使用反射来加载给定名称的类。它返回一个Class对象。请参阅this

在您的情况下,它允许您在运行时加载特定的驱动程序,而无需对驱动程序类型进行硬编码。您只需将驱动程序名称作为参数传递。

答案 3 :(得分:0)

它使用reflection来实例化sun.jdbc.odbc.JdbcOdbcDriver类,使用String格式的类名。

这使您的代码 Driver类独立,并允许您在外部传递驱动程序类名作为String参数(这是我们通过配置传递连接详细信息时的标准行为)。