我正在学习使我的 Java 应用程序能够与 MS Access 数据库进行通信。
我不确定一种方法,Class.forName() 方法。我传递的参数是“sun.jdbc.odbc.JdbcOdbcDriver”,它加载了jdbc:odbc 网桥来访问数据库。
Class.forName() 究竟做了什么,为什么需要它?
非常感谢你。
Class.forName()
导致 ClassLoader 将类加载到内存中。JDBC 驱动程序类具有静态初始化程序,可将它们注册到 DriverManager 以供进一步使用。使用Class.forName()
, 和 use后DriverManager.getConnection("jdbc:*", database, username, password)
,jdbc:
已经加载到内存中。
Class.forName()
用于动态加载类。例如,您调用Class.forName("z")
了 ,这将导致类 z 被初始化并返回相应的对象。
Class.forName() 使用反射来加载给定名称的类。它返回一个类对象。看到这个。
在您的情况下,它允许您在运行时加载特定的驱动程序,而无需对驱动程序类型进行硬编码。您只需将驱动程序名称作为参数传递。
它用于reflection
实例化sun.jdbc.odbc.JdbcOdbcDriver
类,使用字符串格式的类名。
这使您的代码Driver
类独立,并允许您将驱动程序类名称作为字符串参数从外部传递(这是我们通过配置传递连接详细信息时的标准行为)。