zoukankan      html  css  js  c++  java
  • System.TypeInitializationException: The type initializer for 'Oracle.DataAccess.Client.OracleConnection' threw an exception. ---> Oracle.DataAccess.Client.OracleException: 提供程序与此版本的 Oracle 客户机不兼容”

    .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
    }
    }
    }

  • 相关阅读:
    jQ的工具类方法
    jq-ajax
    jq-ajax-get
    LOAD
    JQ的尺寸类
    JQ-DOM与元素的操作
    jQ-DOM属性的操作
    jQ的事件
    3位创业公司CEO亲述:200人的小公司,这么做数据管理就对了
    十二潜意识的智商
  • 原文地址:https://www.cnblogs.com/1175429393wljblog/p/10644244.html
Copyright © 2011-2022 走看看