2012-09-17 132 views
2

我试图从我的新PC连接到我的Oracle数据库。我刚刚安装了Visual Studio和ODAC。但是,当我试图做一个简单的连接我得到一个空的消息,空来源,空号码的异常,只是与错误代码是-2147467259OracleConnection抛出空的异常

OracleConnection Prueba; 
Prueba = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=XXX.XXX.XXX.XXX)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=XXXX)));User Id=XXX;Password=XXX;Pooling=true;Max Pool Size=10;Min Pool Size=1"); 
Prueba.Open(); 

异常详细信息
这是Exception.ToString()的代码:

“Oracle.DataAccess.Client.OracleException在 Oracle.DataAccess.Client.OracleException.HandleErrorHelper(的Int32 errCode,OracleConnection conn,IntPtr opsErrCtx,OpoSqlValCtx * pOpoSqlValCtx,Object src,String procedure)
at Oracle.Data Access.Client.OracleException.HandleError(的Int32 ERRCODE, 的OracleConnection康恩,IntPtr的opsErrCtx,对象SRC)
在 Oracle.DataAccess.Client.OracleConnection.Open()
在 OracleConnectionS.Program.Main(字串[] args )在 C:\用户\ Simetri \文档\ Visual Studio的 2010 \项目\的OracleConnection \的OracleConnection \的Program.cs:行 19"

为什么会这样发生的任何想法?

UPDATE

如果我运行Visual Studio作为管理员,我不得到的异常,我可以连接到数据库就好了。

我试着给予Oracle Directory C:\Oracle的完全控制权限。但是,如果我以正常的方式运行Visual Studio(而不是管理员),我会不断收到异常。

背景信息
- 我使用的是Windows 7 64位
- Visual Studio 2010中
- 我可以用SQL *连接只是找到PLUS

+4

什么是“空例外“? –

+0

您是否尝试过连接VS的外部,例如使用TNSPing,然后与SQL Developer? –

+1

@JustinHarvey是的,它工作得很好! – Laggel

回答

3

所以在安装各种版本的ODAC并搜索与此相关的每一篇文章之后。

最后,Clean安装的32位版本是解决方案。

  • 首先,您需要卸载您曾经安装过的所有其他oracle客户端。
  • 之后,寻找你想要的任何ODAC版本(最新的,如果可能的话),但一定要下载32位版本。

为什么?

好东西与在Visual Studio是在开发的版本。如果你正在开发一个控制台应用程序,你将有与客户端版本没有问题,但如果您使用的是Web项目,那么你肯定需要32 bit版本。

  • 最后确保所有在Visual Studio中的项目的目标平台是“32位”
  • 和引用新Oracle.DataAccess.dll你刚刚安装
0

请尝试重新格式化您的连接字符串成这种形式,看看它是如何工作的

<add name="LoisDataAccess" connectionString="Data Source=LOISPRD;Persist Security Info=True;User ID=ABC;Password=DEF" providerName="System.Data.OracleClient" /> 
+0

我没有使用微软的客户。我使用Oracle的客户端使用Oracle.DataAccess.Client;' – Laggel

+0

好的,所以提供者名称会有所不同。 我试图建议,如果你从连接字符串中删除不必要的东西,它可以解决你的问题。所有你需要的应该是一个数据源和一个用户名/密码 –

0

如果您正在使用的客户端是“即时客户端”,那么你可能是通过复制一些Oracle的DLL文件到更好的解决方案 - 为walktrough请参阅this

如果可能,我会推荐使用不同的.NET提供程序......在我的经验中,大多数商业应用程序比Oracle .NET提供程序的问题少得多 - 请参阅here on SO