Страница 1 из 1

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

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

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

Добавлено: 10 сен 2012, 12:36
dimitr

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

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

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

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

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

Добавлено: 12 сен 2012, 12:33
pincher1519
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 и все прекрасно работало... не поддерживается потому, что он не реализовал поддержку?.. Наверное именно так читать правильно будет...

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

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

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