ODP.NET Orcale使用

安装,
以前Oracle使用9i版本,因为公司就使用这个版本开发数据库.
但是Win2008 不兼容只能使用oracle 11G 没这了,使用11G 吧
但是出现了毛病 自己开发Vs2008程序的时候的使用Oracle.DataAccess.dll

因为我使用的是11G的数据库,所以开发非常的顺利,

底层已经开发完成都已经封装好了,剩下了一点,因为来的别的重要的任务交给同事,继续开发!

这时候出现了错误了:

csharp代码
  1. Oracle.DataAccess.Client.OracleConnection”的类型初始值设定项引发异常  

 

因为他的机子了装的是Oracle 9i不兼容最新的Oracle.DataAccess.dll !

还有发布时机子基本上都是Oracle 9i的数据库,只用使用ODP.NET 来实现了,

我认为在每次的时候都安装下ODP.NET 非常的不方便!而且有可能跟以前的程序产生兼容性问题

最后决定使用 免安装版本的自己集成到Dll里面

下载的是ODAC1110720Xcopy 版本 从里面提取了

  1. oci.dll  
  2. ociw32.dll   
  3. Oracle.DataAccess.dll  
  4. orannzsbb11.dll   
  5. oraocci11.dll   
  6. oraociei11.dll 
  7. OraOps11w.dll  

7个文件 放在一个DLL文件夹了 里面Web程序使用的时候

直接引用 Oracle.DataAccess.dll 但必须剩下的6个文件都拷贝到BIn文件夹里面 就直接能使用了

但要注意的是 你使用ODP.NET 就不能使用 tnsnames.ora 来引用

必须手写连接 格式如下:

xml代码
  1. Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID)));  
  2. User Id=myUsername;Password=myPassword;  

还有注意当这些都设置完成后 有可能出现这个错误!

csharp代码
  1. ORA-12505: TNS:listener does not currently know of SID given in connect descriptor  

这时候你必须修改注册表才成

修改如下:  打开注册表

HKEY_LOCAL_MACHINE\Software\Oracle\NLS_LANG

查看 NLS_LANG 的值 是否是NA

如果是 删除 NLS_LANG 直接重启计算机就好了

Ok

下载 ODP.NET

posted @ 2012-02-02 11:01  东风125  阅读(740)  评论(1编辑  收藏  举报