Ошибка SQL Должна быть объявлена скалярная переменная

StackOverflow https://stackoverflow.com/questions/1900867

  •  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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top