久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

利用Java如何實現(xiàn)動態(tài)加載數(shù)據(jù)庫驅(qū)動

利用Java如何實現(xiàn)動態(tài)加載數(shù)據(jù)庫驅(qū)動?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比名山網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式名山網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋名山地區(qū)。費用合理售后完善,十多年實體公司更值得信賴。

代碼實現(xiàn)

在此只例出核心代碼,就是動態(tài)加載數(shù)據(jù)庫驅(qū)動的類,只是此處暫時沒有考慮到數(shù)據(jù)庫連接池的問題,當(dāng)選擇動態(tài)加載數(shù)據(jù)庫驅(qū)動時,數(shù)據(jù)庫連接池需要自己實現(xiàn)

DynamicLoaderService

package com.tongtongxue.dynamic.service.impl;

import java.net.URL;
import java.net.URLClassLoader;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

import javax.annotation.PostConstruct;

import org.springframework.stereotype.Service;

import com.tongtongxue.dynamic.model.DataSourceInfo;
import com.tongtongxue.dynamic.service.IDynamicLoaderService;

/**
 * 動態(tài)加載JDBC數(shù)據(jù)庫驅(qū)動服務(wù)類
 * 
 * @author lzj
 *
 */
@Service
public class DynamicLoaderService implements IDynamicLoaderService {
 // 保存數(shù)據(jù)庫連接信息
 private Map>String, DataSourceInfo< dataSourceInfos = null;
 
 // 保存數(shù)據(jù)庫相應(yīng)驅(qū)動JAR的路徑
 private Map>String, String< paths = null;

 // 緩存對應(yīng)的Driver對象
 private Map>String, Driver< drivers = null;

 private URLClassLoader classLoader;
 
 
 /**
 * 初始化方法
 * 
 * @throws Exception
 */
  @PostConstruct
  public void init() throws Exception {
   dataSourceInfos = new HashMap>String, DataSourceInfo<();
   
   // 此處只已oracle9和oracle12為例,其它數(shù)據(jù)庫信息同理的方式增加即可
   DataSourceInfo oracle9Info = new DataSourceInfo();
   oracle9Info.setDriver("oracle.jdbc.driver.OracleDriver");
   oracle9Info.setUrl("jdbc:oracle:thin:@192.168.0.101:1521:ORACLE");
   oracle9Info.setUsername("system");
   oracle9Info.setPassword("system");
   dataSourceInfos.put("oracle9", oracle9Info);

   DataSourceInfo oracle12Info = new DataSourceInfo();
   oracle12Info.setDriver("oracle.jdbc.driver.OracleDriver");
   oracle12Info.setUrl("jdbc:oracle:thin:@192.168.0.102:1521:orcl");
   oracle12Info.setUsername("system");
   oracle12Info.setPassword("system");
   dataSourceInfos.put("oracle12", oracle12Info);

   // 將數(shù)據(jù)庫對應(yīng)驅(qū)動jar放置容器中
   paths = new HashMap>String, String<();
   paths.put("oracle9", "/driver/ojdbc14.jar");
   paths.put("oracle12", "/driver/ojdbc7.jar");

   // 初始化drivers
   drivers = new HashMap>String, Driver<();
  }

 @Override
 public Connection getConnection(String dbType) throws Exception {
 Connection conn = null;
 Driver driver = drivers.get(dbType);
 
 DataSourceInfo dataSourceInfo = dataSourceInfos.get(dbType);
 if (driver == null) {
  URL jarUrl = this.getClass().getResource(paths.get(dbType));
  classLoader = new URLClassLoader(new URL[]{jarUrl});
  Class>&#63;< driverClass = classLoader.loadClass(dataSourceInfo.getDriver());
  driver = (Driver) driverClass.newInstance();
   
  drivers.put(dbType, driver);
 }

 // 注冊驅(qū)動
 DriverManager.registerDriver(driver);
 Properties properties = new Properties();
 properties.put("user", dataSourceInfo.getUsername());
   properties.put("password", dataSourceInfo.getPassword());
 
   conn = DriverManager.getConnection(dataSourceInfo.getUrl(), properties);
   // 卸載驅(qū)動
   DriverManager.deregisterDriver(driver);
   
 return conn;
 }
}

看完上述內(nèi)容,你們掌握利用Java如何實現(xiàn)動態(tài)加載數(shù)據(jù)庫驅(qū)動的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

新聞名稱:利用Java如何實現(xiàn)動態(tài)加載數(shù)據(jù)庫驅(qū)動
URL網(wǎng)址:http://sd-ha.com/article2/jsjiic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、網(wǎng)站排名、移動網(wǎng)站建設(shè)、軟件開發(fā)、網(wǎng)頁設(shè)計公司、用戶體驗

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)