System.Data.OracleClient要求Oracle客户端软件版本为8.1.7或更高



我在我的PC上安装了Oracle客户端版本10g(注册表ORACLE_BASE-D: Oracle product10.2.0)。我添加了以下参考资料。System.Data.OracleClient .

我得到上面提到的错误。下面是代码片段。

public static OracleConnection getConnection() 
{
    try 
    {
        dataSource = new SqlDataSource();
        dataSource.ConnectionString = System.Configuration.ConfigurationManager.AppSettings.Get("conn");
        OracleConnection connection = new OracleConnection();
        if (dataSource == null) 
        {
            // Error during initialization of InitialContext or Datasource
            throw new Exception("###### Fatal Exception ###### - DataSource is not initialized.Pls check the stdout/logs.");
        } 
        else
        {
            connection.ConnectionString = dataSource.ConnectionString;
            connection.Open();
        }
        return connection;            
    }catch (Exception ex) 
    {
        throw ex;
    }  
}

请让我知道什么是关注的领域和我的缺失。我是Oracle和Asp.Net结合的新手。

看起来您正在使用Microsoft oracle客户端。我建议您使用ODP.net驱动程序,因为它更可靠。(我相信微软客户端也被弃用了?)

http://www.oracle.com/technetwork/topics/dotnet/index - 085163. - html

安装ODP.net驱动,添加Oracle引用。您的项目中的数据访问,然后就可以开始了!示例代码(来自我以前的帖子):

using System;
using System.Data;
using Oracle.DataAccess.Client;
static class Program
{
    [STAThread]
    static void Main()
    {
        TestOracle();
    }
    private static void TestOracle()
    {
        string connString = 
            "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)" + 
            "(HOST=servername)(PORT=‌​1521)))" +
            "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=servicename)));"+ 
            "User Id=username;Password=********;";
        using (OracleConnection conn = new OracleConnection(connString))
        {
            string sqlSelect = "SELECT * FROM TEST_TABLE";
            using (OracleDataAdapter da = new OracleDataAdapter(sqlSelect, conn))
            {
                var table = new DataTable();
                da.Fill(table);
                if (table.Rows.Count > 1) 
                    Console.WriteLine("Successfully read oracle.");
            }
        }
    }
}

编辑:我以前也遇到过"需要Oracle客户端软件版本8.1.7或更高"的错误。我是由于在我的计算机上安装了Oracle客户端而引起的。如果您设置使用Microsoft驱动程序,您可以尝试从计算机上卸载Oracle客户端(讽刺的是)。

在本例中,基本上是System.Data。OracleClient需要访问一些不属于。net的oracle dll。解决方案:

  • 安装Oracle客户端,并将Oracle客户端bin位置添加到windows的Path环境变量中或
  • 复制oraociicus10.dll(基本精简版)或aociei10.dll(基本版),oraocci10.dll, orannzsbb10.dll和oraocci10.dll从oracle客户端安装文件夹到应用程序的bin文件夹,以便应用程序能够找到所需的dll

"我的PC上安装了Oracle客户端版本10g "System.Data。OracleClient要求Oracle客户端软件版本为8.1.7或更高"

您使用的是Microsoft OracleClient, System.Data.OracleClient中的类型在。net Framework 4.0中贬值并将被删除从。net的未来版本http://msdn.microsoft.com/en-us/library/77d8yct7.aspx

检查您的计算机上是否仍然有较旧的Oracle客户端(8或更低)。PATH变量可能仍然指向旧的Oracle客户端bin目录。如果你从windows命令行运行'tnsping',如果你没有看到版本10,那么它仍然默认为旧版本。

在安装新的Oracle客户端之前,最好先卸载所有现有的Oracle客户端。然后安装您的oracle数据库服务器和您的组织支持的最高版本的oracle客户端。

你可能想尝试Oracle Client 11g R2并安装Oracle Data Providers for .NEThttp://www.oracle.com/technetwork/topics/dotnet/index - 085163. - html

如果您使用的是。net Framework 4.0或更高版本,当您添加对Oracle的引用时。Visual Studio项目中的数据访问,请确保此DLL的版本为4.x.x。否则,浏览到您的客户机位置并选择4.x.x。x dll

客户端计算机仍然需要安装Oracle客户端软件才能连接Oracle数据库。数据库用户使用SQL*Net作为Oracle数据库的连接层。System.Data.OracleClient dll不提供此功能。

下载Oracle客户端软件

在编译代码时还必须包含对DLL的引用。例如,如果你正在编译一个c#程序,你的命令行应该包括:

如:- csc /r:System.Data.OracleClient.dll

MSDN

最新更新