| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Базы данных под .NET > Проблема с OleDbParameter (ошибка Bind parameter e |
| Автор: Апрельский Ёжик 19.7.2007, 23:10 | ||||||||||||||||
Подключаюсь к БД FireBird 1 по средствам провайдера LCPI.IBProvider.1 (IBProvider 1). Соответственно это OleDbConnection. Строка подключения выглядит следующим образом:
Подключаюсь через UDL файл (из которого взята строка подключения что выше) вот таким образом:
Но это не особо важно. Подобный механизм обусловлен бизнес логикой. Ниже приведен пример работы:
Все отлично работает и извлекается на этом этапе (со статическим запросом). Но при использовании параметризированных запросов возникает ошибка. Пробовал задавать параметры следующим образом: 1. Вариант
2. Вариант
3. Вариант
(упускаю ненужные подробности для сокращения кода , открываю запрос так же как и в первом примере). Возникает ошибка:
Ошибка в строке открытия , куда бы я не помещал вывод , в OleDbDataReader , OleDbDataAdapter, итп, на строке извлечения неизменно эта ошибка. А именно на этой строке: [B]OleDbDataReader DataReader = DbCmd.ExecuteReader(); [/B] Пробовал изменять SQL , задавая параметр в виде ?, ?id, @id, :id итп (уже просто перебирал варианты). Пробовал другие запросы - ничего не получается. Т.к. без параметров запрос прошел - соединение работает нормально. Возможно проблемы у данного проавайдера с параметрами , но я не думаю что это так. На всякий случай приведу код SQL создающий таблицу:
И ещё раз повторюсь, параметры работают прекрасно с этим же провайдером из Delphi, если нужна БД, то могу дать ссылку на демо версию приложения к которому я разрабатываю модуль. Платформа под которой все это делаю ASP.NET. Язык как понятно C#. Я много времени потратил на решение этой проблемы и зашел в тупик. Если кто-то мне может помочь , то приму любой совет с благодарностью. Спасибо за внимание. |
| Автор: mr.DUDA 20.7.2007, 08:57 |
| Попробуйте не указывать ParameterName при добавлении параметра. |
| Автор: thomas 20.7.2007, 10:39 |
| Апрельский Ёжик, Привет. Статья по http://rsdn.ru/article/db/guide_firebird2_adonet3.xml |
| Автор: Апрельский Ёжик 20.7.2007, 18:41 | ||
mr.DUDA , попробовал , результат тот же. Пробовал вот так (и с варианциями задания параметра :id, ?, итп):
Ещё долго ковырялся с этой проблемой, пришёл к выводу что при задании параметра система не может увязать его со строкой запроса SQL. Как решить эту проблему пока думаю. thomas , спасибо , я вчера тоже наткнулся на этот вариант при поиске решений. Как последняя мера видимо им воспользуюсь. Как последняя - потому что ASP.NET это только часть системы. В системе так же есть FastReport , который до этого момента в Win32 версии использовал другую версию провайдера. Неизвестно пока как он отреагирует. И не очень хорошо заставлять пользователя при развертывании приложения ставить 1 провайдер на Win32 версию , 1 провайдер под ASP.NET приложения ... Но видимо прийдется. Всем спасибо. Если у кого-либо есть ещё идеи насчёт моей проблемы - приму с благодарностью, а пока кажется придётся самому. |
| Автор: mr.DUDA 21.7.2007, 10:38 | ||
Вырезка из статьи по линку thomas-а:
|
| Автор: Апрельский Ёжик 21.7.2007, 21:15 |
| Проблему решил установкой IBProvider 3 Free. mr.DUDA, там действительно все именно так и работает. После некоторых исследований IBProvider 1 пришел к выводу что в строке запроса просто не находятся параметры на этапе "привязки", но т.к. параметр содержится в запросе , то они не могут быть обработаны. Подобных проблем с 3-им провайдером не возникло. Возможно если бы покапаться в настройках подключения по глубже, а именно в специфических параметрах, то можно было бы разобраться, но счел трату времени на это с учетом уже израсходованного излишней. Думаю тема закрыта. PS Жаль что возможностями вкладки Server Explorer в версии Free воспользоваться не удасться... Хотя в IBProvider 1 её так же воспользоваться не удалось, видимо в силу несоответствий. Хотя может я просто не очень хорошо разбираюсь в предметной области... Всем спасибо за помощь. |