Oracle Data Provider for .NET的使用(二)-驅動更換與注意事項


上篇說過了ODP的安裝與配置 ,但是個人比較喜歡托管類型的,畢竟非托管類型的,因為考慮到會有用戶或者是服務器或者是開發人員有32位的機器,就要強制編譯平台平台為32位,只因為這個驅動,有點讓人不愉快了。所以,下面主要先講如果使用托管的驅動,非托管的,看時間吧,我估計除了重量及的ODAC,沒人會選擇使用非托管的代碼,甚至我現在用托管的代碼也都不安裝,直接那個DLL,然后在CONFIG中配置一下。

那么如何從非托管驅動向托管驅動遷移呢?這個我們先來說一下。
為了方便地遷移,ODP.NET的程序接口不論是否托管,都是相同的,所以,不管你的非托管驅動用了多久,這條路你走了多遠,都可以立馬向托管驅動切換,而且還很簡單。

在過去的版本中,托管驅動比非托管的支持更多的API,但是,現在它們倆都現實了支持最新數據庫和.NET框架的特性。

驅動遷移有如下的步驟:
1、將Oracle.ManagedDataAccess.dll引用添加到.NET項目中。
2、將項目中非托管代碼的引用改為托管代碼的引用,即

using Oracle.DataAccess.Client;
或者
using System.Data.OracleClient;
改為:
using Oracle.ManagedDataAccess.Client;

3、一些在config文件中關於Provider的設置需要進行修改,因為ODP.NET的托管驅動支持較少的windows注冊設置,而且有着稍微不一樣的.NET配置格式。具體的請看上一篇中,對於ODP的配置介紹。

ODP.NET編程的重要事項

  • 不可以使用Thread.Abort方法,否則非托管的資源有可能會不被釋放,從而導致內存泄露和數據損壞。

  • 如果想要更有效的使用資源,ODP.NET的對象(如OracleConnection、OracleCommand)需要及時的被關閉(closed)或釋放(disposed),也可以兩個操作都執行。這個操作應該在有機會的時候立即執行而不是依賴於.NET自己的垃圾收集(GC)清理資源的時候來處理。許多用戶發現,在高並發的情況下,及時的關閉與釋放ODP對象,可以十分有效的降低ODP對系統資源的使用。

  • 當遇到由於內存損壞而出現的異常(如:AccessViolationException,Runtime.InteropServices.SEHException)時請勿讓程序繼續執行,注意是整個應用程序應該停止。

  • 如果注冊表HKEY_LOCAL_MACHINE\Software\Oracle\NLS_LANG的值設置為NA,那么ODP.NET會遇到ORA-12705的錯誤,刪除掉這個對象即可解決問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM