gpt4 book ai didi

c# - 如何在我的开发环境中从 Windows 7 x64 上的 C# 连接到 Oracle 数据库

转载 作者:可可西里 更新时间:2023-11-01 08:26:57 25 4
gpt4 key购买 nike

我很难连接到 Windows 7x64 上的 Oracle 数据库

我的环境如下:

  • Windows 7x64
  • Visual Studio 2012
  • Oracle 10g(带 32 位客户端)
  • WinForms

我已将所有项目的 objective-c PU 明确设为 x86 CPU(与 Any 或 x86 相对)

我正在使用 DbProviderFactory.GetFactory 进行连接

我的 app.config 中的 ConnectionString 条目如下所示:

<add name="MYORACLE"
connectionString = "User ID=MYPASSWORD;Password=MYPASSWORd;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MYHOST)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=MYSERVICE)));"
providerName="System.Data.OracleClient" />

(我试过各种样式的连接字符串都没有成功)

当我编译应用程序时,如果我从 Debug 文件夹运行可执行文件,它能够正常连接。但是,如果我尝试在 Visual Studio 中运行它,当我打开连接时它会失败

ORA-06413: Connection not open.\n

这是一个如何调用它的例子:

[TestMethod]
public void ConnectToOracle_Success()
{
var connectionStringSettings = ConnectionBuilder.GetConnectionStringSetting(OracleConnectionName);
var providerFactory = ConnectionBuilder.GetProviderFactory(connectionStringSettings);
ConnectionBuilder.ValidateConnectionString(connectionStringSettings);
using (var connection = providerFactory.CreateConnection())
{
Assert.IsNotNull(connection);
connection.ConnectionString = connectionStringSettings.ConnectionString;
try
{
connection.Open();
}
catch (Exception e)
{
Assert.Equals(e.Message, "");
}
}
}

我在 Windows 7x64 上看到了与 Visual Basic 6 类似的东西,而 Oracle 不喜欢它的安装路径(即括号“Programs (x86)”)。这是同一类事情,还是有另一种方法可以说服 Oracle 采取行动。

最佳答案

这可能是 OCI 客户端版本问题。参见 https://community.oracle.com/message/11103466 .

我见过很多这方面的问题。大多数情况下,这与 ODP.NET 程序集(例如 Oracle.DataAccess)有关,它的版本与操作系统架构不同(我们在这里讨论的是位)。

您可以为此做一些事情:

  1. 安装 32 位和 64 位 ODP.NET 客户端工具(包括该体系结构的 OCI),可从 oracle.com 免费下载。

  2. 为特定处理器架构构建您的应用程序,例如 32 位。

  3. 使用不依赖于 OCI 的第三方 Oracle 客户端连接器(这就是问题所在)。我不推荐这样做,因为大多数时候这是昂贵的解决方案。

关于c# - 如何在我的开发环境中从 Windows 7 x64 上的 C# 连接到 Oracle 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20764912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com