【发布时间】:2010-09-22 06:37:11
【问题描述】:
我需要测试与数据库的 JDBC 连接。执行此操作的 java 代码应该很简单:
DriverManager.getConnection("jdbc connection URL", "username", "password");
驱动程序管理器将为给定的连接 URL 查找适当的驱动程序。但是我需要能够在运行时加载 JDBC 驱动程序(jar)。即我在运行上述代码的 sn-p 的 java 应用程序的类路径上没有 JDBC 驱动程序。
所以我可以使用此代码加载驱动程序,例如:
URLClassLoader classLoader = new URLClassLoader(new URL[]{"jar URL"}, this.getClass().getClassLoader());
Driver driver = (Driver) Class.forName("jdbc driver class name", true, classLoader).newInstance();
但是驱动管理器仍然不会接收它,因为我无法告诉它使用哪个类加载器。我试过设置当前线程的上下文类加载器,还是不行。
有人知道实现这一目标的最佳方法吗?
【问题讨论】:
-
类路径中没有驱动程序是否有充分的理由?
-
是的。该应用程序可以连接到许多数据库。此外,出于许可原因,我不能捆绑所有驱动程序。我想要实现的是一个简单的对话框,让用户在应用程序运行时加载 jar。
-
我又像服务器端开发人员一样思考...... :)