4

我一直在寻找这个,我已经使用 C# 开发了必须连接 Oracle 数据库的 Windows 窗体应用程序,这个应用程序将在许多使用 windows XP 和 windows 7 的 PC 上使用经过长时间的研究,我发现我需要使用 OBP.net 进行 oracle 访问,但问题是我无法在每台 PC 上安装 oracle 客户端,但是我发现在CodePorject Example中可以下载 5 个 DLL 文件来完成相同的工作

OCI Instant Client Data Shared Library
    oraociicus10.dll (Basic-Lite version)
    oraociei10.dll (Basic version)
Client Code Library
    oci.dll
Security Library
    orannzsbb10.dll
OCCI Library
    oraocci10.dll

但是当我发布应用程序时,它不会连接到 Oracle 数据库请帮助我如何让我的 Windows Forms 应用程序在没有安装 Oracle 客户端的 PC 的情况下连接 Oracle 数据库,如果可以通过上述 DLLS 实现这一点,我该怎么做?

编辑:

DataTable dt = new DataTable();
OracleConnection Oracle_connection = new OracleConnection();
Oracle_connection.ConnectionString = con;
Oracle_connection.Open();

连接超时,Oracle_connection.Open();在调试模式下,我不使用 TNSNAMES.ORA 因为我的连接字符串是

Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.20.2.54)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = PRD))) ;User Id=catering;Password=catering;"`

试图发布它在 Windows 7 PC 上工作但在 Windows XP 上不起作用的代码 System.TypeInitializationException: The type initializer for 'Oracle.DataAccess.Client.OracleConnection' threw an exception. ---> Oracle.DataAccess.Client.OracleException The provider is not compatible with the version of Oracle client at Oracle.DataAccess.Client.OracleInit.Initialize()

不知道它是否与 Windows 相关或缺少某些 DLL

4

3 回答 3

2

还有完全托管的 .net 连接器,又名 ODP.NET 托管驱动程序:

我已经在安装了 .NET 4.0 框架的 Windows 8 和 Windows XP SP3 上对其进行了测试——一切都按预期工作。部署时,只需要 1 个 dll (Oracle.ManagedDataAccess.dll),其重量为 6 MB(与几乎 40 MB 的即时客户端 lite 相比)。

更新:使用托管 oracle 驱动程序的最佳方法可能是通过 NuGet ( ODP.NET @ nuget )

于 2013-04-04T20:57:35.770 回答
0

ODP.net 对混合版本号很挑剔。错误信息:

System.TypeInitializationException:“Oracle.DataAccess.Client.OracleConnection”的类型初始化程序引发了异常。---> Oracle.DataAccess.Client.OracleException 提供程序与 Oracle.DataAccess.Client.OracleInit.Initialize() 处的 Oracle 客户端版本不兼容

表明它在某处选择了错误的客户端 DLL 版本。当我使用 Oracle 和 Visual C# 2010 进行一些开发时,我从以下位置下载了 ODP.NET 库:

http://www.oracle.com/technetwork/developer-tools/visual-studio/downloads/index.html

然后,我为我将使用的 Oracle 版本选择了正确的版本,并在我的项目中使用了这些 DLL。我不确定重新分配的限制是什么。

于 2013-03-06T21:39:02.703 回答
0

看这个帖子:provider is not compatible with the version of Oracle client

那里列出的 DLL 为我完成了这项工作(都在与 exe 相同的目录中)。

于 2015-02-05T19:41:44.413 回答