Ошибка SQL Должна быть объявлена скалярная переменная
-
19-09-2019 - |
Вопрос
private void FillInvoiceList()
{
DataTable distinctInvoice = new DataTable();
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["APOS_CONNECTION_STRING"].ConnectionString))
{
conn.Open();
SqlCommand cmd = new SqlCommand("Select distinct svc_tag from data where rep_name = @value");
cmd.Parameters.AddWithValue("@value", this.DropDownList1.SelectedItem.Text);
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(cmd.CommandText, conn.ConnectionString);
sqlDataAdapter.Fill(distinctInvoice);
}
foreach (DataRow row in distinctInvoice.Rows)
{
this.ListBox1.Items.Add(row["svc_tag_dim_invoice_num"].ToString());
}
}
У меня есть этот код, и я получаю эту ошибку, когда вызываю Fill(DistinctInvoice)
Необходимо объявить скалярную переменную "@value"
Мой метод FillInvoiceList() вызывается из события SelectedIndexChanged из выпадающего списка1.Значение DropDownList1.SelectedItem.Текст кажется правильным.
Спасибо за любую помощь.
Решение
Ошибка находится здесь :
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(cmd.CommandText, conn.ConnectionString);
Вы настраиваете SqlDataAdapter на использование исходного текста команды, а не самой SqlCommand.Измените его на :
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(cmd, conn.ConnectionString);
Не связан с StackOverflow