在C#开发的过程当中,常常须要操做Oracle数据库,而实际在部署程序的时候,常常要根据系统环境(3二、64bit)、不安装Oracle客户端等等需求,而Odp.net 也没有完美兼容的类库,应用能够调用, 因此部署起来老是碰到各类问题,挺头疼的,在这里,我对工做中碰到的问题进行总结一下。redis
链接方式数据库
32位系统ide
64位系统测试
免安装Oracle客户端spa
小结.net
C#链接Oracle的方式,我通常都是经过odp.net 进行链接命令行
<configuration> <connectionStrings> <add name="OracleDB" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=数据库IP地址)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=实例名)));User Id=帐号;Password=密码;Min Pool Size=10;Connection Lifetime=120;Connection Timeout=60;Incr Pool Size=5; Decr Pool Size=2" providerName="Oracle.DataAccess.Client"/> </connectionStrings> </configuration>
1. 安装Oracle客户端: ODTwithODAC1120320_32bit code
2. 直接调用便可,没什么好说的,若是要免安装客户端,下面会说到component
配置文件中添加xml
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.121.1.0" newVersion="4.121.1.0" /> </dependentAssembly> </assemblyBinding> </runtime>
将5个Oracle客户端的类库文件提取出来,放到程序根目录下,分别是oci.dll、Oracle.DataAccess.dll、orannzsbb11.dll、oraociei11.dll、OraOps11w.dll
<system.data> <DbProviderFactories> <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/> </DbProviderFactories> </system.data>
关于64位系统下,暂时还未测试,Oracle客户端的类库也必须是64位的
在部署程序的时候,若是遇到一些捕捉不到的异常,底层跑出来的, 这个时候能够安装一下 C++ 的运行库 ,好比:vc2008redist 或 vc2010redist。