2

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

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

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

非常感谢你。

4

4 回答 4

7

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

于 2012-11-23T16:53:24.803 回答
1

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

于 2012-11-23T16:55:23.803 回答
0

Class.forName() 使用反射来加载给定名称的类。它返回一个类对象。看到这个

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

于 2012-11-23T16:53:23.297 回答
0

它用于reflection实例化sun.jdbc.odbc.JdbcOdbcDriver类,使用字符串格式的类名。

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

于 2012-11-23T16:53:38.460 回答