Member 13878464 Ответов: 2

Ошибка сервера в приложении'/'. Параметризованного запроса '(@идентификатор тип int, @имя тип nvarchar(4000))выбрать * из Нью-Мексико, где ID=@ID и ' ожидает, что параметр '@name', которым не была поставлена.



имя       
&ЛТ;АСП:текстовое поле с ID="txtnm" атрибут runat="сервер"и GT;
&ЛТ;АСП:кнопка ID="кнопка 1" атрибут runat="сервер" текст="отправить" /&ГТ;


&ЛТ;АСП:метка идентификатор="lblmsg" атрибут runat="сервер" и GT;
&ЛТ;АСП:таблицы с ID="gridview1, на" атрибут runat="сервер" AutoGenerateColumns="false" - в DataKeyNames="идентификатор" OnPageIndexChanging="GridView1_PageIndexChanging" метода onrowcancelingedit="GridView1_RowCancelingEdit" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating"&ГТ;
<столбцы>
&ЛТ;АСП:шаблон HeaderText="идентификатор" SortExpression="идентификатор"и GT;
<edititemtemplate>
&ЛТ;АСП:текстовое поле с ID="txtid" атрибут runat="сервер" текст=в'<%# Персонализация("идентификатор") %&ГТ; в'>

<itemtemplate>
&ЛТ;АСП:метка идентификатор="Метка1" атрибут runat="сервер" текст=в'<%# Персонализация("идентификатор") %&ГТ; в'>


<asp:TemplateField HeaderText="name" SortExpression="name">
<edititemtemplate>
&ЛТ;АСП:текстовое поле с ID="txtnm" атрибут runat="сервер" текст=в'<%# Персонализация("название") %&ГТ; в'>

<itemtemplate>
&ЛТ;АСП:метка идентификатор="Метка2" атрибут runat="сервер" текст=в'<%# Персонализация("название") %&ГТ; в'>







.файл CS
общественный разделяемого класса _default : на системы.Веб.Пользовательского интерфейса.Страницы
{
ООО Д = новая даль();
бал б = новый бал();
охраняемых недействительными в(объект отправителя, EventArgs в электронной)
{
если (!страница.IsPostBack)
{
филлгрид();
}
}

частная пустота fillgrid()
{
Управления gridview1.Источник данных = б.дисплей(д);
Управления gridview1.Привязку();
}

охраняемых недействительными обработчика button1_click(объект отправителя, EventArgs в электронной)
{
д. название = txtnm.Текст;
int i = b.вставить(d);
если (i == 0)
{
lblmsg.Text = "не вставлять";
}
еще
{
lblmsg.Text = "вставить";
}
филлгрид();

}

Что я уже пробовал:

открытый класс бал
{
ООО Д = новая даль();
SqlConnection con = новый SqlConnection(ConfigurationManager.ConnectionStrings["db"].Параметр connectionString);
Команда sqlcommand cmd в;
публичный бал()
{
//
// TODO: добавьте сюда логику конструктора
//
}

публичный DataTable дисплей(dal d)
{
КМД = новая команда sqlcommand("Select * из Нью-Мексико, где ID=@ID и name=@name", даже кон);
cmd.параметры.AddWithValue("@id", d.id);
cmd.параметры.AddWithValue("@имя", Д. название);
SqlDataAdapter da = новый SqlDataAdapter(cmd);
DataTable dt = новый DataTable();
да.Заполнить(ДТ);
возврат dt;
}

public int insert(dal d)
{
КМД = новая команда sqlcommand("вставить в Нм, где (имя)значения(@имя)", кон);
cmd.параметры.AddWithValue("@имя", Д. название);
против.Открыть();
int i= cmd.Метод executenonquery();
против.Закрывать();
вернуться я;

}
}

F-ES Sitecore

Эта ошибка не требует объяснений...вы говорите ему ожидать параметр с именем @name, но не предоставляете его. Используйте отладчик, чтобы увидеть, какие данные вы передаете ему, например, что такое "d.name-что?

MadMyche

Какие ценности вы передаете?

2 Ответов

Рейтинг:
1

RmcbainTheThird

Не используйте параметры.AddWithValue. Создать объект параметр и добавить его к объекту sqlcommand. И когда вы это сделаете, вам нужно будет указать тип. Параметры.AddWithValue попытается определить тип, и это может быть причиной вашей ошибки.

Например:

qlParameter param = new SqlParameter
            {
                ParameterName = "@parent_id",
                DbType = DbType.Int32,
                Value = parentID
            };

и затем

cmd.Parameters.Add(param);


Рейтинг:
0

OriginalGriff

Просто передать значение параметру может быть недостаточно: если переданное значение является .NET null тогда он "засчитывается" как не поставляемый для многих случаев.

Используйте отладчик (или добавьте код ведения журнала, если это происходит только в рабочей среде), чтобы проверить фактические значения, передаваемые в SQL, и добавить try ... catch блоки так, чтобы вы могли быть уверены в том, где происходит.