動態資料來源測試資料庫連線問題

2021-08-11 04:26:10 字數 1173 閱讀 2677

最近一直在負責動態資料來源的問題,做乙個統一的介面適配,今天在做乙個連線時,會有乙個測試連線的過程

class.forname(driver);

connnection = drivermanager.getconnection(dburl, user, password);

driver代表的資料庫驅動,發現測試連線時是ok的,但是真正的配置成為資料來源時卻出現了問題。

後來發現,我用的是 com.mysql.jdbc.driver mysql的驅動,但是資料庫是乙個oracle的資料庫,找到了問題所在,問題也解決了,但是為什麼會出現這種問題了。

後面去看了drivermanager.getconnection的原始碼發現

for(driverinfo adriver : registereddrivers) 

} catch (sqlexception ex)

}} else

}

可以看到它是從乙個driver集合裡面取出driver去試探性的鏈結,而我們做動態資料來源的時候是有註冊oracle的驅動的,所以用這個方法,你的驅動寫的mysql,但是它返回成功是因為它使用了oracle的驅動。

所以該測試連線在配置動態資料來源,配置datasourse時是不對的,應該改為獲取對應的資料庫驅動去嘗試連線,如果連線不為空,才是正確的。

driver driverclass = (driver) class.forname(driver).newinstance();

// 獲取連線

properties info = new properties();

if(!stringutils.isempty(user))

if(!stringutils.isempty(password))

connnection = driverclass.connect(dburl, info);

//connnection = drivermanager.getconnection(dburl, user, password);

if(connnection!=null)else

從這裡看出來,我們遇到問題的時候可以深入去看看它的原始碼,從原始碼你就會知道你的問題具體在哪。

測試資料庫連線的函式

以前一直困擾我的乙個問題,如何判斷資料庫連線是否成功 比如sql沒有啟動,資料庫不存在等 實現友好的錯誤處理,但vbscript的錯誤處理機制實在太差,只有on error resume nex go to,但往往使用ado的錯誤陷阱後,等待你的將是指令碼超時,這個函式將改變這一狀況 連線超時長短可...

動態建立資料來源問題

動態建立資料來源問題 delphi windows sdk api 下面 是動態建立odbc資料來源 請問要把下面 加在那個地方才不會出錯,我加在工程檔案裡也出錯,加在單元檔案裡也出錯,function getwinsyspath string var buf array 0.255 of char...

資料來源資料庫ODBC資料來源管理與配置

工作之餘抽點時間出來寫寫博文,希望對新接觸的朋友有幫助。今天在這裡和大家一起學習一下資料來源資料庫 在應用visual c 停止資料庫程式應用開發式,需要指定應用程式所應用的資料來源。資料來源就是乙個資料庫與其訪問環境的集合,儲存了資料庫連線及應用的驅動程式等資訊。資料來源可以應用 odbc資料來源...