首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#连接oracle数据库时出错,该如何解决

2014-01-13 
C#连接oracle数据库时出错使用oracle提供的连接库Oracle.DataAccess.dll,在创建连接对象时就错了,还没有执

C#连接oracle数据库时出错
C#连接oracle数据库时出错,该如何解决
使用oracle提供的连接库Oracle.DataAccess.dll,在创建连接对象时就错了,还没有执行SQL语句。这是怎么回事,同学跟我使用的一个库,他就没出现这个问题。无法创建对象没法继续下去了
[解决办法]
看下你Oracle的安装路径中,是否包含括号,曾经有括号引发错误的BUG。
[解决办法]
没装oracle的机器上不能使用Oracle.DataAccess.dll
至少要装ORACLE的客户端
[解决办法]
http://blog.csdn.net/vbloveshllm/article/details/8202477
[解决办法]
使用的Oracle.DataAccess.dll必须是安装的Oracle程序里面的,而不能从其它地方复制,那样是无效的,至于版本号的问题,可以配置运行时版本兼容,再或者统一安装Oracle客户端,保证版本一致。
所以对于使用Oracle的.NET程序,最好不要直连数据库,直接一台服务器提供数据库接口访问服务,例如用WCF来实现。那样再麻烦的配置都只有一次,不需要配置所有客户端。
[解决办法]
Oracle的64位和32位版本是不同步的,为什么我不知道,Oracle公司也就这个是做得最不人性化的了。
要解决版本问题,可以在程序里强制设置编译版本为x86,即使在64位电脑上,也使用32位的Oracle客户端,那样就肯定能同步版本,不然就做个版本检测程序,首次运行时自动到系统注册表搜索安装的Oracle版本号,然后修改配置文件后重新开启程序,配置文件修改如下:
<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="Oracle.DataAccess"
                publicKeyToken="89B483F429C47342"
                culture="neutral" />
                <bindingRedirect
                  oldVersion="2.112.2.0"
                  newVersion="2.112.1.0"/>
            </dependentAssembly>
        </assemblyBinding>
        <Thread_UseAllCpuGroups enabled="true"/>
        <GCCpuGroup enabled="true"/>
        <gcServer enabled="true"/>
    </runtime>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    </startup>
</configuration>
注意红色部分,oldVersion为你程序编译时使用的Oracle版本,而newVersion为运行时客户电脑上安装的版本,可以检索注册表信息自动得到后修改此配置文件节点,保存后重启程序。

热点排行