Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > IfxDataReader.HasRows


Автор: Baikan4ik 15.6.2009, 13:29
имеется сервер Informix 10. В программе происходит успешное подключение к нему. Далее производится некоторая выборка данных из БД через IfxDataReader и IfxCommand. Проблема в том, что свойтсво IfxDataReader.HasRows все время возвращает FALSE, независимо от реального наличия данных. При использовании не информиксовых классов,а OdbcDataReader - свойство выдает правильный результат. Как еще можно определить наличие данных в DataReader'е? 

Автор: Baikan4ik 15.6.2009, 14:08
вопрос пока решился использованием цикла с постусловием:

при работающем свойстве HasRows
Код

if(!this._Dr.HasRows)
{
.........какие-то действия, в результате которых цикл не выполнится ни разу
    return -1;
}
while(this._Dr.Read())
{
.........какие-то действия
}


при неработающем свойстве HasRows
Код

if(!this._Dr.Read())
{
.........какие-то действия, в результате которых цикл не выполнится ни разу
    return -1;
}
do
{
.........какие-то действия
}while(this._Dr.Read());



но вопрос остается открытым...почему все-таки HasRows не работает корректно.

Код

    public sealed class IfxDataReader : DbDataReader, IDataReader, IDataRecord, IDisposable, IEnumerable
    {
        public override int Depth { get; }
        public override int FieldCount { get; }
        public override bool HasRows { get; }
....................................................................
     }

что OdbcDataReader, что IfxDataReader наследуются от DbDataReader, где определено свойство, только в версии Odbc работает правильно. Подскажите где я ошибся или стоит написать разработчикам?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)