以前Oracle使用9i版本,因为公司就使用这个版本开发数据库.
但是Win2008 不兼容只能使用oracle 11G 没这了,使用11G 吧
但是出现了毛病 自己开发Vs2008程序的时候的使用Oracle.DataAccess.dll
因为我使用的是11G的数据库,所以开发非常的顺利,
底层已经开发完成都已经封装好了,剩下了一点,因为来的别的重要的任务交给同事,继续开发!
这时候出现了错误了:
csharp代码 1.Oracle.DataAccess.Client.OracleConnection”的类型初始值设定项引发异常
Oracle.DataAccess.Client.OracleConnection”的类型初始值设定项引发异常
因为他的机子了装的是Oracle 9i不兼容最新的Oracle.DataAccess.dll !
还有发布时机子基本上都是Oracle 9i的数据库,只用使用ODP.NET 来实现了,
我认为在每次的时候都安装下ODP.NET 非常的不方便!而且有可能跟以前的程序产生兼容性问题
最后决定使用 免安装版本的自己集成到Dll里面
下载的是ODAC1110720Xcopy 版本 从里面提取了
csharp代码
oci.dll
ociw32.dll
Oracle.DataAccess.dll
orannzsbb11.dll
oraocci11.dll
oraociei11.dll
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;
Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID)));
User Id=myUsername;Password=myPassword;还有注意当这些都设置完成后 有可能出现这个错误!
csharp代码 1.ORA-12505: TNS:listener does not currently know of SID given in connect descriptor
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