OracleDataReader теряет результаты после экзамена - PullRequest
0 голосов
/ 20 января 2009

Я столкнулся со странной «функцией» в Visual Studio, и мне было интересно узнать, заметил ли кто-нибудь еще это. Или если это специфично для меня.

У меня есть несколько методов, которые выполняют SQL-запросы к базе данных, а затем возвращают OracleDataReader

method()
{
OracleCommand cmd = new command(query, connection);
OracleDataReader r = cmd.ExecuteReader();

return r;
}

Когда я отлаживаю код, который использует этот метод. Я могу нажать на непубличных участников, чтобы просмотреть строки в результатах. Однако, как только я просмотрел эти результаты, пытаясь выполнить читателя. Read () в OracleDataReader не содержит никаких результатов. Проверка результатов в представлении отладчика показывает читателя как пустого.

Каждый раз, когда я не проверяю результаты, код, выполняющий чтение, работает без проблем.

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

Большое спасибо.

Ответы [ 2 ]

1 голос
/ 17 августа 2012

Я вижу нечто противоположное. Я делаю

    OracleDataReader reader = cmd.ExecuteReader();
    return reader;
    .... return it up the stack a couple more levels;

Если я не вызову reader.hasRows на каждом уровне стека, мои результаты, похоже, будут отклоняться, и я получаю нулевые указатели при попытке получить к ним доступ.

1 голос
/ 20 января 2009

Объекты ADO.NET, производные от IDataReader (например, OracleDataReader), предоставляют подключенный прямой доступ к данным, возвращаемым запросом, поэтому при просмотре результатов в визуализаторе отладки вы на самом деле шагаете по реальным данным. , Когда программа запускается, DataReader перебирает данные и сообщает (правильно), что теперь она пуста.

Если вам нужна гибкость для просмотра данных в отладчике, вы можете рассмотреть возможность использования отключенного класса доступа к данным с произвольным доступом, такого как DataSet или DataTable.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...