NerakSeven Ответов: 2

Ошибка : необходимо объявить скалярную переменную в C#


Необходимо объявить скалярную переменную @code

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

с уважением

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

public void Insert()
       {
           ReglaController re = new ReglaController();
           re.Regla_2();

           string constr = ConfigurationManager.ConnectionStrings["Constring"].ConnectionString;
           using (SqlConnection con = new SqlConnection(constr))
           {
               con.Open();

               string query = "INSERT INTO test (r1) VALUES (@code)";

               using (SqlCommand cmd = new SqlCommand(query, con))
               {
                   cmd.ExecuteNonQuery();


                  cmd.Parameters.Add("@code", SqlDbType.NVarChar).Value = re.Regla_2();



               }

           }

       }

2 Ответов

Рейтинг:
5

NerakSeven

Я ее разгадал


public void Insert()
        {
            ReglaController re = new ReglaController();
            re.Regla_2();

            string constr = ConfigurationManager.ConnectionStrings["Constring"].ConnectionString;
            using (SqlConnection con = new SqlConnection(constr))
            {
                con.Open();

                string query = "INSERT INTO test (r1) VALUES (@code)";

                using (SqlCommand cmd = new SqlCommand(query, con))
                {
                    cmd.ExecuteNonQuery();


                    cmd.Parameters.Add("@code", SqlDbType.NVarChar).Value = re.Regla_2(); 
                    

                }

            }

        }


Richard Deeming

Это, по-видимому, точно такой же код, как и вопрос, и все еще страдает от точно такой же проблемы, на которую указал Дейв в решении 1.

Рейтинг:
1

Dave Kreskowiak

МММ... посмотрите на свой код еще раз. Совершенно очевидно, в чем проблема.

Вы вызываете ExecuteNonQuery для выполнения запроса INSERT, а затем пытаетесь добавить параметр, определяющий @code. Это явно наоборот. Поменяйте местами эти две строки кода, и тогда это должно сработать.

Вы могли бы понять это, немного подумав и использовав отладчик.