關於java jdbc 動態加載驅動jar包

在項目中,搞數據庫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了.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章