Sep. 3rd, 2006

metaclass: (Default)
Так вот, к вопросу об отладке MS Jet базы данных, заведенной через OleDbConnection.

Как я уже писал, апдейт таблицы из трех столбцов вызывал исключение "Data type mismatch in criteria expression." причем типы параметров были точно правильными. Причина - неясна.

Решил я сегодня попытаться разобраться с этой фигней. И совершенно случайно всплыла в голове, фраза, сказанная [livejournal.com profile] belnetmon, когда он пытался завести проект, работающий с сервером через ADO. На дельфи, не на .NET: "Параметры надо указывать в том порядке, в котором они идут в запросе". Решил проверить(на самом деле будучи уже уверенным, что именно это причина ошибки):

Код с ошибкой )

Код без ошибки )

Итак, что мы получаем? А получаем мы, что имена параметрам указать можно и при работе с MSSQL они используются. А при работе с MS Jet ADO.NET МОЛЧА ложит на имена болт и проставляет параметры в запрос в том порядке, в каком их добавляли, и движок базы данных выдает ошибку несоответствия типа для условия where.

Более менее осмысленный способ отладки таких вещей - мониторинг запросов на уровне движка базы данных, но поиск по гуглу выдал только пару ссылок на коммерческое ПО с такой функциональностью (и то не факт, что оно в данном случае подойдет).

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 9th, 2025 04:35 am
Powered by Dreamwidth Studios