请问一个动态加载jdbc驱动的问题

accipiter 05-12-30

我需要完成这样一个功能,
做一个数据库连接软件。
其中数据库会有多种,其jdbc驱动由用户在软件内定制(指定jar文件)。
现在问题是软件启动时,jdbc驱动没有加载,因为他们是在软件运行时定义的。现在要求在定义后,程序能在运行时加载驱动并连接到指定的数据库。
我现在已经试了很长时间,问题可能出在classloader或者drivermanager上,我对这方面不清楚,也没法debug跟踪进去,
哪位大侠能帮帮忙?

accipiter
2005-12-30 15:47

请看,这是我的代码。我把它简化了。
帮我看一下错在哪里?
public void connect()
{
URL[] urls = new URL[1];
try
{
urls[0] = new File("d:\\javacode\\lib\\ojdbc14.jar").toURL();
URLClassLoader loader = new URLClassLoader(urls, ClassLoader.getSystemClassLoader());

Object driver = loader.loadClass("oracle.jdbc.driver.OracleDriver").newInstance();();//这一步通过了,而且能看到得到的的确是oracle.jdbc.driver.OracleDriver这个类
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@10.18.4.73:1521:iimsprod", "j2eetest", "j2eetest");//错误出现在这一步。给出的信息是No suitable driver

System.out.print("end");
}
catch(Exception e)
{
e.printStackTrace();
}
}

如果把oracle driver的jar添加到启动class path里就没问题,说明不是jar本身的问题。

banq
2006-01-02 20:47

不要自己动手写jdbc驱动这种低层次代码,用框架或tomcat等容器提供的连接池即可。

accipiter
2006-01-04 09:31

我想知道如何解决这个问题,而不是该不该自己解决这个问题。