.net应用程序通过Oracle.DataAccess.dll访问64位的Oracle服务器,在连接时出现以下异常:“System.TypeInitializationException: The type initializer for 'Oracle.DataAccess.Client.OracleConnection' threw an exception. ---> Oracle.DataAccess.Client.OracleException: 提供程序与此版本的 Oracle 客户机不兼容”

oracle 在C# 中调用oracle的数据库时,出现引用库和当前客户端不兼容的问题解决方案

解决方案

1、直接引用  Oracle.ManagedDataAccess.Client.dll动态库即可,

2、引用  Oracle.DataAccess.Client.dll动态库,但根目录下面要有这八个动态库才可以正常使用Oracle 数据库,

(引用 Oracle.DataAccess.Client,但是使用Oracle.DataAccess.dll时,其生成根目录下要有这八个dll(Oracle.ManagedDataAccess这个库相当于后面八个库(oci,ociw32,orannzsbb11,oraocci11,oraociei11,oraons,OraOps11w,OWC11八个动态库))才可以使用11g oracle数据库)

下面是代码:

//using Oracle.DataAccess.Client;
using Oracle.DataAccess.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//using System.Data.OracleClient;
//using Oracle.ManagedDataAccess.Client;

namespace MyTest
{
class Program
{
static void Main(string[] args)
{

#region 引用 Oracle.ManagedDataAccess.Client

//OracleConnection con = null;
//try
//{
// //string connString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)));User Id=taizhou;Password=taizhou";
// //11g ORACLE
// //string connString = "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.144)(PORT = 1521))(CONNECT_DATA = (SID = orcl))); User Id = evms; Password = evms; Pooling = true; Min Pool Size = 10; Max Pool Size = 100; Connection Lifetime = 120; Connection Timeout = 60; Incr Pool Size = 5; Decr Pool Size = 2;";
// //10g ORACLE
// string connString = "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.158)(PORT = 1521))(CONNECT_DATA = (SID = ORCL))); User Id = evms; Password = evms; Pooling = true; Min Pool Size = 10; Max Pool Size = 100; Connection Lifetime = 120; Connection Timeout = 60; Incr Pool Size = 5; Decr Pool Size = 2; ";
// //string connString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=130.147.246.144)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ECMS)));Persist Security Info=True;User ID=system;Password=Service01;";
// con = new Oracle.ManagedDataAccess.Client.OracleConnection(connString);

// con.Open();

// ////SELECT* FROM TAIZHOU."UserInfo"
// //string connstring = @"Data Source=TAIZHOU;User ID=taizhou;Password=taizhou;";
// ////实例化OracleConnection对象
// //OracleConnection conn = new OracleConnection(connstring);
// ////打开连接
// //conn.Open();

// StringBuilder stringBuilder = new StringBuilder();
// Oracle.ManagedDataAccess.Client.OracleCommand oracleCommand = new Oracle.ManagedDataAccess.Client.OracleCommand("SELECT * FROM EVMS.USERINFO", con);
// var ss = oracleCommand.ExecuteReader();
// while (ss.Read())
// {
// string name = ss.GetOracleString(3).ToString();
// stringBuilder.AppendLine(name);
// }
// Console.WriteLine(stringBuilder.ToString());
// ss.Close();
// Console.Read();
//}
//catch (Exception ex)
//{
// Console.WriteLine("11111111111111");
//}
//finally
//{
// con.Close();
//}
#endregion

#region 引用 Oracle.DataAccess.Client,但是使用Oracle.DataAccess.dll时,其生成根目录下要有这八个dll(Oracle.ManagedDataAccess这个库相当于后面八个库(oci,ociw32,orannzsbb11,oraocci11,oraociei11,oraons,OraOps11w,OWC11八个动态库))才可以使用11g oracle数据库

OracleConnection con = null;
try
{
//string connString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)));User Id=taizhou;Password=taizhou";
//string connString = "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.144)(PORT = 1521))(CONNECT_DATA = (SID = orcl))); User Id = fcms; Password = fcms; Pooling = true; Min Pool Size = 10; Max Pool Size = 100; Connection Lifetime = 120; Connection Timeout = 60; Incr Pool Size = 5; Decr Pool Size = 2;";
string connString = "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.144)(PORT = 1521))(CONNECT_DATA = (SID = ORCL))); User Id = evms; Password = evms; Pooling = true; Min Pool Size = 10; Max Pool Size = 100; Connection Lifetime = 120; Connection Timeout = 60; Incr Pool Size = 5; Decr Pool Size = 2; ";

//string connString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=130.147.246.144)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ECMS)));Persist Security Info=True;User ID=system;Password=Service01;";
con = new OracleConnection(connString);

con.Open();

////SELECT* FROM TAIZHOU."UserInfo"
//string connstring = @"Data Source=TAIZHOU;User ID=taizhou;Password=taizhou;";
////实例化OracleConnection对象
//OracleConnection conn = new OracleConnection(connstring);
////打开连接
//conn.Open();

StringBuilder stringBuilder = new StringBuilder();
OracleCommand oracleCommand = new OracleCommand("SELECT * FROM evms.USERINFO", con);
var ss = oracleCommand.ExecuteReader();
while (ss.Read())
{
string name = ss.GetOracleString(3).ToString();
stringBuilder.AppendLine(name);
}
Console.WriteLine(stringBuilder.ToString());
ss.Close();
Console.Read();
}
catch (Exception ex)
{
Console.WriteLine("11111111111111");
}
finally
{
con.Close();
}
#endregion
}
}
}

System.TypeInitializationException: The type initializer for 'Oracle.DataAccess.Client.OracleConnection' threw an exception. ---> Oracle.DataAccess.Client.OracleException: 提供程序与此版本的 Oracle 客户机不兼容”的更多相关文章

  1. System.TypeInitializationException: The type initializer for 'Mono.Unix.Native.Stdlib' threw an exception.

    08-31 17:02:03: ### DEBUG ##########################System.TypeInitializationException: The type ini ...

  2. System.TypeInitializationException: 'The type initializer for 'MySql.Data.MySqlClient.Replication.ReplicationManager' threw an exception.'

    下午在调试的时候报错数据库连接就报错我就很纳闷后面用原来的代码写发现还是报错 System.TypeInitializationException: 'The type initializer for ...

  3. System.Data.SqlClient.SqlException: 在向服务器发送请求时发生传输级错误。 (provider: TCP 提供程序, error: 0 - 远程主机强迫关闭了一个现有的连接。) .

    今天使用sql server 2008 R2管理器,进行SQL查询时,频率非常高的报错: System.Data.SqlClient.SqlException: 在向服务器发送请求时发生传输级错误. ...

  4. the type initializer for '' threw an exception

    the type initializer for '' threw an exception 问题:程序启动时初始化主窗口类时,弹出该错误.调查:查看类的构造函数是否会有异常抛出.解决:去掉类的构造函 ...

  5. System.Security.SecurityException The type initializer for 'System.Data.Entity.Internal.AppConfig' threw an exception

    [15/08/19 00:03:10] [DataManager-7292-ERROR] System.Reflection.TargetInvocationException: Exception ...

  6. 关于System.TypeInitializationException异常

    什么是System.TypeInitializationException 作为类初始值设定项引发的异常的包装器而引发的异常. 继承 Object Exception SystemException ...

  7. .NET 错误 47 存储区提供程序工厂类型“Oracle.DataAccess.Client.OracleClientFactory”未实现 IServiceProvider 接口。请使用实现该接口的存储区提供程序。

    问题描述: 最近用VS2010连接ORACLE数据库的时候突然报错“错误 47 存储区提供程序工厂类型“Oracle.DataAccess.Client.OracleClientFactory”未实现 ...

  8. 解决Oracle.DataAccess.Client.OracleConnection”的类型初始值设定项引发异常。

    解决Oracle.DataAccess.Client.OracleConnection”的类型初始值设定项引发异常. 这个问题他们说是oracle的版本问题 但是好像不是...(我感觉VS版本问题,我 ...

  9. An unhandled exception of type 'System.TypeInitializationException' occurred in System.ServiceModel.dll

    异常“ An unhandled exception of type 'System.TypeInitializationException' occurred in System.ServiceMo ...

随机推荐

  1. datatable转换为list<model> 映射

    using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.R ...

  2. MySQL安装 8.0.15版本

    windows下MySQL 8.0.15的安装和设置 MySQL下载地址:https://dev.mysql.com/downloads/mysql/ 我的百度网盘下载(win64位):链接:http ...

  3. Ubuntu 使用 Android Studio 编译 TensorFlow android demo

    https://www.cnblogs.com/dyufei/p/8028218.html https://www.myboxlab.com/topic/detail/714ca2d405414f13 ...

  4. 什么是webservice?

    webservice是一种跨平台,跨语言的规范,用于不同平台,不同语言开发的应用之间的交互. 这里具体举个例子,比如在Windows Server服务器上有个C#.Net开发的应用A,在Linux上有 ...

  5. 5.21http网页基础

    1,HTML的由来: web网页开发的标准,由w3c万维网联盟组织制定的.是制作网页的规范标准,分为结构标准.表现标准.行为标准.结构:html.表现:css.行为:Javascript. 2,htm ...

  6. 使用X.509数字证书加密解密实务(一)-- 证书的获得和管理

    http://www.cnblogs.com/chnking/archive/2007/08/18/860983.html

  7. C#获取客户端IP地址

    客户端ip:Request.ServerVariables.Get("Remote_Addr").ToString();客户端主机名:Request.ServerVariables ...

  8. Linux(Ubuntu)下安装jdk

    一.下载 1)可以去官网下载:http://www.oracle.com/technetwork/java/javase/downloads/ea-jsp-142245.html,比较多,眼花~~· ...

  9. IMAGENT CLASSIFICATION WITH DEEP CONVOLUTIONAL NEURAL NETWORKS(翻译)

    0 - 摘要  我们训练了一个大型的.深度卷积神经网络用来将ImageNet LSVRC-2010竞赛中的120万高分辨率的图像分为1000个不同的类别.在测试集上,我们在top-1和top-5上的错 ...

  10. 调试 - Visual Studio调试

    Visual Studio - 调试 异常处理机制 windows预定义了一系列的异常错误码,每种程序异常都有一个对应的错误码,windows系统将这些类似键值对关系的数据存储在异常处理表中(称为SE ...