Ошибочная информация содержится в FBDataReader.HasRows

Access Violation, некорректное выполнение запросов или вызовов API, ошибки утилит командной строки, в общем все, что вам мешает работать

Модераторы: kdv, dimitr

Ответить
pincher1519
Сообщения: 15
Зарегистрирован: 10 сен 2012, 11:51

Ошибочная информация содержится в FBDataReader.HasRows

Сообщение pincher1519 » 10 сен 2012, 11:58

Столкнулся с такой проблемой. Перевел программу с IBProvider 2.0 на "FirebirdClient - .NET 3.5, 7-Zip archive".
Возникло пару проблем:
1. Не сильно критичная, но содержимое класса FBConnection свойств DataBase и DataSource поменялось местами относительно OleDBConnection;
2. А вот это вполне критично, используется в коде программы повсеместно, и появились глюки приложения из-за этого: Свойство HasRows класса FBDataReader содержит значение True, даже если в результате запроса ничего не выдалось. При попытке прочитать значение FBDataReader.Read() выдается значение false, на основании чего могу судить, что записей в DBDataReader не было.


pincher1519
Сообщения: 15
Зарегистрирован: 10 сен 2012, 11:51

Re: Ошибочная информация содержится в FBDataReader.HasRows

Сообщение pincher1519 » 10 сен 2012, 14:57

т.е., как я понял ошибка известна с 2010 года, и как-то не торопятся ее исправлять? =( печально... придется в коде программы везде прописывать reader.read() для получения достоверного ответа.

kdv
Forum Admin
Сообщения: 6575
Зарегистрирован: 25 окт 2004, 18:07
Контактная информация:

Re: Ошибочная информация содержится в FBDataReader.HasRows

Сообщение kdv » 10 сен 2012, 17:31

как я понял ошибка известна с 2010 года, и как-то не торопятся ее исправлять?
см. комментарий автора драйвера:
Firebird protocol has no support for this. Until you actually ask for some data. Hence the property returns true for all selects.

pincher1519
Сообщения: 15
Зарегистрирован: 10 сен 2012, 11:51

Re: Ошибочная информация содержится в FBDataReader.HasRows

Сообщение pincher1519 » 12 сен 2012, 12:33

kdv писал(а):
как я понял ошибка известна с 2010 года, и как-то не торопятся ее исправлять?
см. комментарий автора драйвера:
Firebird protocol has no support for this. Until you actually ask for some data. Hence the property returns true for all selects.
Так почему же не поддерживается?.. ранее работал через провайдер и подключение через тот же OleDBConnection и все прекрасно работало... не поддерживается потому, что он не реализовал поддержку?.. Наверное именно так читать правильно будет...

В общем ответ понял. Придется считывать строку и дополнительно проверять. Не удобно, но видима придется именно так жить.

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Re: Ошибочная информация содержится в FBDataReader.HasRows

Сообщение dimitr » 12 сен 2012, 20:12

OLEDB-провайдер, видимо, при открытии датасета втихаря зачитывал в него некоторое количество строк, и при отсутствии таковых мог вернуть false в подобном методе. NET-провайдер, видимо, без спросу записи на клиента не тянет, поэтому понятия не имеет есть в курсоре данные или нет. И тут безопаснее сказать, что таковые есть. Особенность реализации, не более.

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость