oracle.ManagedDataAccess.dll全托管驱动学习总结

一、学习背景:

1)微软自vs2010后放弃了自家的system.data.oracleClient驱动,推荐使用oracle提供的驱动。

2)微软提供的system.data.oracleClient驱动存在oracle32位与64位连接兼容性的问题,解决起来费时费力。

二、Oracle推荐的驱动:oracle.DataAccess.dll与oracle.ManagedDataAccess.dll

1)oracle.DataAccess.dll的缺陷。oracle.DataAccess.dll需要几个dll文件,在实际使用中发现,oracle.DataAccess.dll无客户端连接方式同样存在所使用的dll文件的32位与64位和oracle数据库或系统本身存在的dll存在连接兼容性问题。所以不推荐使用该驱动。

2)推荐使用oracle.ManagedDataAccess.dll(oracle.ManagedDataAccess.Client)全托管驱动。实际使用发现,oracle全托管驱动对32位和64位oracle数据库具有很好的连接兼容性。可采用无客户端远程连接oracle,或在本机使用连接。可通过visual studio 2010 nuget安装,或直接下载dll文件,然后引用oracle.ManagedDataAccess.dll文件。在项目数据访问层中引用命名空间using oracle.ManagedDataAccess.Client,如图2-1

2-1引用oracle.ManagedDataAccess.Client命名空间

 

三、Web.config连接字符串

NET提供的链接字符串connectionString="DataSource=192.168.1.2:1521/orcl;Persist Security Info=True;User ID=scott;Password=tiger";


四、关于command.BindByName = true;(重点敲黑板)

1)在使用全托管驱动oracle.ManagedDataAccess.dll后,ado.net的增删查语句都执行正常,但是在执行修改语句(update语句)时,会引发异常。

2)默认情况下ODP.Net 绑定变量时,sql语句中的变量顺序必须和变量绑定顺序一致,否则Fill查不到数据,cmd.ExecuteNonQuery()返回0无法执行,将BindByName 设为true后,sql变量顺序和绑定顺序即可不一致

 

猜你喜欢

转载自blog.csdn.net/windows_xp_guule/article/details/80565243
今日推荐