Member 13650918 Ответов: 1

Как решить, нужно ли объявлять скалярную переменную в команде SQL insert?


protected void Add_Click(object sender, EventArgs e)
      {


          string constr = ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString;
          SqlConnection con = new SqlConnection(constr);
          //SqlCommand cmd = new SqlCommand("insert into Student values('" + RegNo.Text + "','" + Name.Text + "','" + Address.Text + "')");
          SqlCommand cmd = new SqlCommand("insert into Student(@RegNo,@Name,@Address,@CreatedTime) values(@RegNo,@Name,@Address,Getdate())");

          cmd.Connection = con;
          con.Open();

          cmd.ExecuteNonQuery();
          con.Close();

      }


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

здесь я пытаюсь вставить записи . у меня есть 3 текстовых поля,а именно RegNo,Name,Address,и в моей таблице у меня есть $ columns RegNo,Name, Address, CreatedTime. в моем коде возникла следующая ошибка .
Необходимо объявить скалярную переменную @RegNo .
что же делать?

Richard Deeming

В дополнение к решению 1 у вас также есть синтаксическая ошибка в вашем SQL-операторе. Так и должно быть:

insert into Student(RegNo,Name,Address,CreatedTime) values(@RegNo,@Name,@Address,Getdate())
Первый список в скобках-это список столбцов, в которые вы вставляете данные. Путем префикса их с помощью @ вместо этого вы пытаетесь использовать значения параметров.

1 Ответов

Рейтинг:
2

OriginalGriff

Когда вы создаете параметризованный запрос - а это совершенно правильный способ выполнения операций SQL, - вы также должны создать параметр, содержащий значение, которое вы хотите передать в SQL. Это немного похоже на вызов метода в C#. Вы его определяете

public int DoInsert(int regNo, string name, string address, DateTime insertDate)
   {
   ...
   }
Но когда вы вызываете его, вы должны предоставить значения:
int rowsAffected = DoInsert(666, "Mike Smith", "2 Main Street, Kentucky", DateTime.Now);
Если вы пропустите какие-либо параметры, вы получите ошибку компилятора.
SQL-это то же самое.
Добавьте строку для каждого параметра:
cmd.Parameters.AddWithValue("@NameOfParameterInSQLCommand", valueIWantInTheColumn);
И это начнет работать.


Ehsan Sajjad

5ed