我正在学习如何使我的Java应用程序与MS Access数据库进行通信。
我不确定一个方法,即Class.forName()方法。我传递的参数是“sun.jdbc.odbc.JdbcOdbcDriver”,它加载用于访问数据库的jdbc:odbc桥。
Class.forName()究竟做了什么,为什么需要它?
非常感谢。
答案 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参数(这是我们通过配置传递连接详细信息时的标准行为)。