在項目中,搞數據庫oracle 9.0.1.1 版本的時候(用的驅動爲ojdbc5),由ORA-03120: 雙工轉換例行程序: 整數溢出引發了血案,導致要實現jdbc動態加載驅動(plsql的實現就用了這種方法),因爲在oracle 9.0.1.1 版本只能用ojdbc14驅動,才能解決這個ORA-03120問題.
下面介紹一下動態加載的方式: 採用類加載器 URLClassLoader
例子見下
package com.tobe.jarLoaderDemo;
import java.io.File;
import java.net.URL;
import java.net.URLClassLoader;
import java.sql.Driver;
**
* 動態加載jdbc驅動工具類
* @author tangxr
* @version DriverLoader V1.0, 2012-08-10
*
public class DriverLoader {
**
* 加載對應路徑jar包裏的對應驅動
* @param fname
對應路徑 如: lib4/ojdbc14.jar
* @param dname
驅動名 如: oracle.jdbc.driver.OracleDriver
* @return
加載到的驅動
java.sql.Driver
* @throws Exception
* @author tangxr
*
public static Driver getDriverLoaderByName
(String fname,String dname)throws Exception {
if(null == fname ||
"".equals(fname)){
System.out.println("對應的驅動路徑不存在,請確認.");
return
null;
}
if(null == dname ||
"".equals(dname)){
System.out.println("對應的驅動類的名字不存在.");
return
null;
}
File file = new
File(fname);
if(!file.exists()){
System.out.println("對應的驅動jar不存在.");
return
null;
}
URLClassLoader loader = new
URLClassLoader(new URL[] { file.toURI().toURL() });
loader.clearAssertionStatus();
return (Driver)
loader.loadClass(dname).newInstance();
}
}
這樣就能加載到對應jar包的Driver了.