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

05-12-30 accipiter
我需要完成这样一个功能,

做一个数据库连接软件。

其中数据库会有多种,其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
我想知道如何解决这个问题,而不是该不该自己解决这个问题。

猜你喜欢