Количество параметров не совпадает со значением параметра - PullRequest
3 голосов
/ 21 апреля 2010

Мы получаем сообщение об ошибке сервера: «Число параметров не соответствует значению параметра». Кто-нибудь знает, что это может означать?

Наш сайт находится на веб-формах ASP.NET, работающих под управлением DotNetNuke в качестве CMS.

Я попытался загрузить более старую версию файла web.config, но, похоже, она не изменилась с момента появления ошибки. Это не было ни в одной из наших недавних загрузок файлов модулей, потому что я перезагружал старые файлы с этого утра, когда мы изменили.

Может ли это быть вызвано какими-либо изменениями в базе данных или это должно происходить из-за ошибки в коде?

Спасибо.

Ответы [ 3 ]

5 голосов
/ 21 апреля 2010

В некоторых SQL-запросах или хранимых процедурах задано больше параметров, чем полученных значений параметров.

Примерно так:

command.CommandText = "EXEC test @a";
command.Parameters.Add("@a", "a");
command.Parameters.Add("@b", "b");

т.е. посмотрите на схему базы данных.Было ли это изменено?Были ли изменены хранимые процедуры?

4 голосов
/ 20 августа 2010

Я обнаружил, что если вы используете параметры со значениями по умолчанию, некоторые библиотеки не могут обрабатывать.

Например, у нас есть приложение, которое использует более старую версию метода доступа к данным Microsoft Enterprise Library, которая позволяет передавать параметры в виде массива.

Сбой, если количество элементов в массиве не совпадает точно с количеством параметров хранимой процедуры, независимо от того, являются ли некоторые «необязательными» или нет.

В таких случаях нужно использовать прямой ADO.NET и использовать cmd.Parameters.AddWithValues("@parameterName", value)

синтаксис для обязательных параметров хранимой процедуры. При использовании этого метода вам не нужно будет добавлять параметры команды для «необязательных» параметров хранимой процедуры.

0 голосов
/ 07 июня 2013

У меня была та же проблема, и я обнаружил, что она выбирает поля из временного кэша, который поддерживается MySQLHelper.

...