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

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

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

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

非常感谢你。

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

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

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

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

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

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