Дырявые абстракции
Sep. 3rd, 2006 11:58 amТак вот, к вопросу об отладке MS Jet базы данных, заведенной через OleDbConnection.
Как я уже писал, апдейт таблицы из трех столбцов вызывал исключение "Data type mismatch in criteria expression." причем типы параметров были точно правильными. Причина - неясна.
Решил я сегодня попытаться разобраться с этой фигней. И совершенно случайно всплыла в голове, фраза, сказанная
belnetmon, когда он пытался завести проект, работающий с сервером через ADO. На дельфи, не на .NET: "Параметры надо указывать в том порядке, в котором они идут в запросе". Решил проверить(на самом деле будучи уже уверенным, что именно это причина ошибки):
( Код с ошибкой )
( Код без ошибки )
Итак, что мы получаем? А получаем мы, что имена параметрам указать можно и при работе с MSSQL они используются. А при работе с MS Jet ADO.NET МОЛЧА ложит на имена болт и проставляет параметры в запрос в том порядке, в каком их добавляли, и движок базы данных выдает ошибку несоответствия типа для условия where.
Более менее осмысленный способ отладки таких вещей - мониторинг запросов на уровне движка базы данных, но поиск по гуглу выдал только пару ссылок на коммерческое ПО с такой функциональностью (и то не факт, что оно в данном случае подойдет).
Как я уже писал, апдейт таблицы из трех столбцов вызывал исключение "Data type mismatch in criteria expression." причем типы параметров были точно правильными. Причина - неясна.
Решил я сегодня попытаться разобраться с этой фигней. И совершенно случайно всплыла в голове, фраза, сказанная
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
( Код с ошибкой )
( Код без ошибки )
Итак, что мы получаем? А получаем мы, что имена параметрам указать можно и при работе с MSSQL они используются. А при работе с MS Jet ADO.NET МОЛЧА ложит на имена болт и проставляет параметры в запрос в том порядке, в каком их добавляли, и движок базы данных выдает ошибку несоответствия типа для условия where.
Более менее осмысленный способ отладки таких вещей - мониторинг запросов на уровне движка базы данных, но поиск по гуглу выдал только пару ссылок на коммерческое ПО с такой функциональностью (и то не факт, что оно в данном случае подойдет).