Порядок именованных параметров имеет смысл для провайдера данных MySql .Net? - PullRequest
1 голос
/ 14 июля 2010

Я обнаружил, что в моем проекте порядок именованных параметров имеет смысл.

Я называю эту процедуру

CREATE PROCEDURE `test`.`TestProc` (
in myText varchar (5),
in myText2 varchar (100)
)
BEGIN

END

Если я добавлю такие параметры:* Я получаю исключение «Слишком длинные данные».Также я не могу воспроизвести это в тестовом проекте.

Есть мысли?


Я нашел причину.Похоже, ошибка в MySql .Nat Data Provider.Чтобы воспроизвести ошибку, вам нужно вызвать ее не под пользователем root.

Вывод: MySql.Data версия 6.2.3.0.Порядок именованного параметра имеет смысл, если вы вызываете процедуру с учетной записью без полномочий root

Ответы [ 3 ]

1 голос
/ 16 июля 2010

Ответ, который я получаю от багтрекера MySql:

Реджи Бернетт

Не думаю, что это ошибка.Я полагаю, что ваш тестовый пользователь не имеет права видеть тело процесса.Пожалуйста, войдите в MySQL, используя клиент командной строки и тестовую учетную запись пользователя.Сделайте "процедуру показа создания" на вашем proc.Если тело имеет значение null, вам нужно использовать опцию «use function body = false» и передавать параметры в правильном порядке.

1 голос
/ 14 июля 2010

Имя параметров не обязательно должно соответствовать столбцам, но заполнители:

INSERT INTO testproc (mytext, mytext2) VALUES (?mytext, ?mytext2)

Полагаю, если вы используете безымянные параметры:

INSERT INTO testproc (mytext, mytext2) VALUES (?, ?)

порядок имеет значение,

Я всегда использовал первый вариант, но с:

command.Parameters.Add("?mytext2", "aaaaaaaaaaaaaaaaa")
command.Parameters.Add("?mytext", "bbbb")

Не знаю, имеет ли это какое-либо значение для AddWithValue ()

Обновление: только что заметилчто в ваших параметрах отсутствует знак вопроса.Это будет проблемой.Добавьте вопросительный знак как к вашему запросу, так и к вашим параметрам.

0 голосов
/ 14 июля 2010

Драйвер MySQL не поддерживает именованные параметры. Имя параметров игнорируется, и они применяются в том порядке, в котором вы их поместили в коллекцию параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...