正在破译odp.net触发的堆栈跟踪错误

本文关键字:堆栈 跟踪 错误 net odp | 更新日期: 2023-09-27 18:19:10

我正在使用ODP.net连接到Oracle模式,并不断触发以下错误跟踪:

   ORA-6413: Connection not open.
   at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(
      Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure)
   at Oracle.DataAccess.Client.OracleException.HandleError(
      Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src)
   at Oracle.DataAccess.Client.OracleConnection.Open()

我完全无法解释为什么我正在使用的应用程序不能建立连接。我对oracle特有的错误代码的理解有限,所以任何可以分享的见解都是非常感谢的。

我通过登录到SQL+ plus测试了登录凭据和TNS设置,这些都是正确的。

我使用的连接字符串格式是:

    user id=[userid];
    password=[password];
    data source=//[machine ID]:[port]/[service name]
我使用的是10.2.0.100版本的OracleDataAccess.dll。

我可以为任何敢于尝试解决这个问题的人提供更多信息。任何输入都是非常感激的-我一直在困惑这个太久了!

正在破译odp.net触发的堆栈跟踪错误

基于您的错误消息:"ORA-6413:连接未打开。"很可能您的代码只是忽略了打开数据库连接。

你的代码应该看起来像这样:

using(OracleConnection _dbConnection = /*...setup connection object here...*/)
{
    _dbConnection.Open();
    var cmd = _dbConnection.CreateCommand();
    cmd.CommandText="some sql here";
    cmd.ExecuteReader();
    //... do "stuff" and then close your reader and connection...
}