【问题标题】:OracleDataAdapter.Fill "Connection must be open" errorOracleDataAdapter.Fill “必须打开连接”错误
【发布时间】:2012-04-05 21:37:21
【问题描述】:

我有一些使用 ODP.Net 的代码

using (OracleConnection connection = new OracleConnection(connectionString))
{
  connection.Open();
  boxCommand = new OracleCommand(sql, connection);

  OracleDataAdapter boxAdapter = new OracleDataAdapter(boxCommand);
  DataTable boxTable = new DataTable();        

  boxAdapter.Fill(boxTable);
}

然后我在生产服务器上收到以下错误。测试服务器没问题。

我不明白它抱怨连接未打开,但如果出现问题,它应该发生在我的 Open 未在 Fill 上调用时。我还认为Fill 无论如何都应该打开连接。

谁能建议可能发生的事情?

更新:从 cmets 我尝试添加这个但同样的问题:

using (OracleConnection connection = new OracleConnection(connectionString))
{
  connection.Open();
  while(connection.State != ConnectionState.Open)
  {
     connection.Close();
     connection.Open();
  }
  boxCommand = new OracleCommand(sql, connection);

  OracleDataAdapter boxAdapter = new OracleDataAdapter(boxCommand);
  DataTable boxTable = new DataTable();        

  boxAdapter.Fill(boxTable);
}

更新 2:我已将日志记录和 Validate Connection = true 添加到连接字符串,并且我知道连接状态已打开,box 命令已完成,已创建适配器并已创建表,它肯定会出错填充

【问题讨论】:

  • 你能在调试信息中写出connection.State的值吗?
  • 希望对您有所帮助connection-lost-contact
  • 这是您的真实/实际代码,还是只是一个示例? (我怀疑这是一个被操纵的例子,因为boxTable 在填充后会失去作用域而不会被使用。)我觉得代码 sn-p 中缺少一些细节......
  • @rally25rs 你完全错了,OP 提到错误发生在Fill 不是之后也不是之前......我认为史蒂夫评论中的链接解释了一切......
  • @Steve 为什么 Fill 没有打开连接?

标签: c# .net oracle oracle10g odp.net


【解决方案1】:

您可以尝试安装latest version of ODP.Net 看看是否还有问题吗?即使针对较旧的 Oracle DB(在您的情况下为 10g),您也应该能够运行最新的 ODP.Net。

编辑: 由于您受限于特定的 ODP.net 版本,因此可以尝试以下其他方法:

  • 确保正确的 Oracle 文件夹位于系统路径的开头。例如,我的路径开头有 Oracle 文件夹,如下所示(我在 c:\oracle\ora11g 中安装了 ODP.net,并且我还安装了 Oracle 10g Express Edition,但请注意 ODP.net 文件夹是第一

    c:\oracle\ora11g\product\11.1.0\client_1;c:\oracle\ora11g\product\11.1.0\client_1\bin;C:\oracle\ora10g\bin;

    我见过 Oracle 会做一些奇怪的事情,如果路径不正确就无法正常工作的情况。

  • 尝试重新安装您正在使用的特定 ODP.net 版本。这应该会清理一切,并有望解决您的问题。

【讨论】:

  • 我不能,我害怕。这里使用的 DLL 是 10.2.0.100
  • @Jon - 查看我的最新编辑以了解其他一些可能的提示。祝你好运。
猜你喜欢
  • 2011-05-13
  • 1970-01-01
  • 1970-01-01
  • 2017-09-09
  • 2020-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多