OracleDataAdapter.Fill Ошибка «Соединение должно быть открыто» - PullRequest
1 голос
/ 03 апреля 2012

У меня есть код, который использует 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);
}

Затем я получаю сообщение об ошибке ниже на рабочем сервере. Тестовый сервер в порядке.

Error Image

Я не понимаю, что он жалуется на то, что соединение не открыто, но если возникла проблема, это должно произойти в тот момент, когда мой Open вызывается не на Fill. Также я подумал, что Fill должен был все равно открыть соединение.

Кто-нибудь может подсказать, что может происходить?

ОБНОВЛЕНИЕ: Из комментариев я попытался добавить это, но та же проблема:

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 выполнена, адаптер создан и таблица создана, она определенно вызывает ошибки Заполнение

1 Ответ

0 голосов
/ 03 апреля 2012

Можете ли вы попробовать установить последнюю версию ODP.Net и посмотреть, есть ли проблема? Вы должны иметь возможность использовать последнюю версию ODP.Net даже для более старых баз данных Oracle (10g в вашем случае).

EDIT : Поскольку вы ограничены конкретной версией ODP.net, попробуйте выполнить еще несколько действий:

  • Убедитесь, что правильные папки Oracle находятся в начале вашего системного пути. Например, у меня есть папки Oracle в начале моего пути, как это (у меня ODP.net установлен в c: \ oracle \ ora11g и у меня также установлен Oracle 10g Express Edition, но обратите внимание, что папки ODP.net первый

    C: \ оракул \ ora11g \ продукт \ 11.1.0 \ client_1; C: \ оракула \ ora11g \ продукт \ 11.1.0 \ client_1 \ Bin; C: \ оракула \ ora10g \ Bin;

    Я видел ситуации, когда Oracle делает странные вещи и не работает должным образом, если путь неверен.

  • Попробуйте переустановить конкретную версию ODP.net, которую вы используете. Это должно привести в порядок вещи и, надеюсь, решить вашу проблему.

...