【发布时间】:2014-01-12 22:24:19
【问题描述】:
我在连接到 Windows 7x64 上的 Oracle 数据库时遇到困难
我的环境如下:
- Windows 7x64
- Visual Studio 2012
- Oracle 10g(带有 32 位客户端)
- WinForms
我已将所有项目的目标 CPU 明确设为 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 不喜欢它的安装路径(即括号“程序 (x86)”)。这是同一类事情,还是有其他方法可以说服 Oracle 采取行动。
【问题讨论】:
-
当您到达代码 sn-p 中的 connection.Open() 行时,您得到的是 ORA-06413 错误吗?
-
是的,您在连接字符串中的任何位置是否有 Programs (x86)?
-
控制台应用?赢得表格?
-
问题出在(x86)括号上。尝试在 Programs(x86) 文件夹之外重新安装应用程序。
-
ORA-06413 似乎是到达 Open() 行时得到的结果
标签: c# oracle visual-studio visual-studio-2012 windows-7-x64