最近突然碰见这么一个问题,要从DB2 7上向DB2 8导入数据。这时DB2JAVA.ZIP的版本不一样还要同时执行,只能拿出URLClassLoade这个法宝了。
执行前不要把任何DB2的JdBC当classpath导入
Connection conn = null;
URL url = new URL("file:"+"/usr/db28/db2java8.zip");//要加载的JAR或ZIP包
URLClassLoader urlCL =URLClassLoader.newInstance(new URL[] { url });
Class c =urlCL.loadClass("COM.ibm.db2.jdbc.net.DB2Driver");//加载类
Driver dd= (Driver) c.newInstance();//类的实例化
String dbUrl = "jdbc:db2://1.2.3.4:6789/aaa";//数据库URL
Properties info = new Properties();
info.setProperty("user", "db2inst1");
info.setProperty("password", "password");
conn = dd.connect(dbUrl, info);//获得连接
用这个办法就可以动态加载两个不同版本的DB2 JDBC驱动了。连接池的方式我暂时没有试,不过C3P0至少可以同时加载不同数据库,其实很简单这里懒得说了。