欢迎光临
我们一直在努力

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的错误,删除掉这个对象即可解决问题。

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:Oracle Data Provider for .NET的使用(二)-驱动更换与注意事项
文章链接:https://www.jmwz.net/2029.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址