【问题标题】:OracleConnection is throwing empty exceptionOracleConnection 抛出空异常
【发布时间】:2012-09-09 17:39:26
【问题描述】:

我正在尝试从我的新 PC 连接到我的 Oracle 数据库。我刚刚安装了 Visual Studio 和 ODAC。但是当我尝试做一个简单的连接时,我得到一个空消息、空源、空数字的异常,只是错误代码是 -2147467259

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,对象源,字符串过程)
在 Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src)
在 Oracle.DataAccess.Client.OracleConnection.Open()
在 OracleConnectionS.Program.Main(String[] args) 在 C:\Users\Simetri\Documents\Visual Studio 2010\Projects\OracleConnection\OracleConnection\Program.cs:line 19"

知道为什么会发生这种情况吗?

更新

如果我以管理员身份运行 Visual Studio,则不会出现异常,并且可以正常连接到数据库。

我尝试向 Oracle Directory C:\Oracle 授予 FULL CONTROL 权限。但是,如果我以正常方式(不是以管理员身份)运行 Visual Studio,我会不断收到异常。

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

【问题讨论】:

  • 您是否尝试过在 VS 之外进行连接,例如使用 TNSPing,然后使用 SQL Developer?
  • @JustinHarvey 是的,它工作得很好!
  • @Laggel 你是怎么改正的?
  • @Laggel:请显示ex.ToString()的输出
  • @DanielHilgarth "Oracle.DataAccess.Client.OracleException at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String 过程)\r \n 在 Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src)\r\n 在 Oracle.DataAccess.Client.OracleConnection.Open()\r\n 在 OracleConnectionS.Program。 C:\Users\Simetri\Documents\Visual Studio 2010\Projects\OracleConnection\OracleConnection\Program.cs:line 19 中的 Main(String[] args)

标签: c# oracle database-connection odp.net odac


【解决方案1】:

所以在安装了各种版本的 ODAC 并搜索了与此相关的每个帖子之后。

最终,32 位版本的全新安装是解决方案。

  • 首先,您需要卸载您曾经安装的所有其他 Oracle 客户端。
  • 之后,查找您想要的任何 ODAC 版本(如果可能,为最新版本),但请务必下载 32 位版本。

为什么?

嗯,这与开发 Visual Studio 的版本有关。如果您正在开发控制台应用程序,则客户端版本不会有问题,但如果您使用的是 Web 项目,那么您肯定需要 32 位版本。

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

【讨论】:

    【解决方案2】:

    如果您使用的客户端是“即时客户端”,那么您最好将一些 Oracle-DLL 复制到您的解决方案中 - 有关演练请参阅 this

    如果可能的话,我会建议使用不同的 .NET 提供程序...根据我的经验,大多数商业提供程序比 Oracle .NET 提供程序的问题要少得多 - 请参阅 here on SO

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 我没有使用微软的客户端。我正在使用 Oracle 的客户端 using Oracle.DataAccess.Client;
      • 好的,所以提供者名称会有所不同。我试图建议,如果您从连接字符串中删除不必要的内容,它可以解决您的问题。您只需要一个数据源和一个用户名/密码
      猜你喜欢
      • 1970-01-01
      • 2016-08-22
      • 2017-09-02
      • 2015-09-25
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 2013-08-17
      • 1970-01-01
      相关资源
      最近更新 更多