带有C#windows窗体应用程序的Oracle即时客户端

时间:2013-01-07 12:08:36

标签: c# .net oracle dll instantclient

我一直在寻找这个, 我使用C#开发了Windows Forms App,它必须连接Oracle数据库, 这个应用程序将在许多使用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窗体应用程序连接Oracle数据库而不安装oracle客户端PC,如果可以通过上述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()

Dunno如果它与Windows相关或某些DLL丢失

3 个答案:

答案 0 :(得分:2)

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

我已经在安装了.NET 4.0框架的Windows 8和Windows XP SP3上进行了测试 - 所有工作都按预期进行。对于部署,只需要1个dll(Oracle.ManagedDataAccess.dll),其重量为6 MB(与即时客户端精简版相比,差不多是40 MB)。

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

答案 1 :(得分: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。我不确定再分配的限制是什么。

答案 2 :(得分:0)

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

那里列出的DLL为我做了工作(All与exe在同一个目录中)。