Daniel Andrei Popescu Ответов: 1

Ошибка"необходимо объявить переменную @studentnr".как я могу ее решить?


Здравствуйте,у меня есть проблема в моей программе, когда я хочу вставить данные в БД.Это мой код.:
public void SaveData(object param)
      {
          string connstring = null;
          connstring = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=C:\\Users\\user0909\\Documents\\AttendanceStudents.mdf;Integrated Security=True;Connect Timeout=30";
          try
          {
              using (SqlConnection con = new SqlConnection(connstring))
              {


                  string sql = "Insert into RegisterStudent(SN,sNr,fName,lName,semester)Values(@sn,@studentNr,@fName,@lName,@semester)";
                  con.Open();
                  using (SqlCommand cmd = new SqlCommand(sql, con))
                  {
                      cmd.Parameters.AddWithValue("@SN", SqlDbType.Int).Value = sn;
                      cmd.Parameters.AddWithValue("@sNr", SqlDbType.Int).Value = studentNr;
                      cmd.Parameters.AddWithValue("@fName", SqlDbType.NVarChar).Value = fName;
                      cmd.Parameters.AddWithValue("@lName", SqlDbType.NVarChar).Value = lName;
                      cmd.Parameters.AddWithValue("@semester", SqlDbType.Int).Value = semester;
                      if(!string.IsNullOrEmpty(sql))
                      {
                          cmd.CommandText = sql;
                          cmd.ExecuteNonQuery();

                      }

                  }
              }
          }
          catch (Exception ex)
          {
              MessageBox.Show(ex.Message);
          }
      }


Я вставляю все значения в текстовые поля,но получаю ошибку"
Must declare variable @studentNr"

Это мой стол.:
CREATE TABLE [dbo].[RegisterStudent]
(
	[SN] INT NOT NULL PRIMARY KEY, 
    [sNr] INT NOT NULL, 
    [fName] NVARCHAR(MAX) NOT NULL, 
    [lName] NVARCHAR(MAX) NOT NULL, 
    [semester] INT NULL
)


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

Это то, что я пробовал:
SqlParameter StudentNR = cmd.Parameters.AddWithValue("@sNr", SqlDbType.Int);

             cmd.Parameters["@sNr"].Value = studentNr;
             if (StudentNR.Value == null)
             {
                 StudentNR.Value = DBNull.Value;
             }

Я пробовал этот подход,но все равно получаю ошибку?В чем может быть проблема?Заранее благодарю вас!

1 Ответов

Рейтинг:
10

F-ES Sitecore

В строке SQL вы используете имя параметра @studentNr, но определяемый вами параметр называется @sNr, они должны совпадать

string sql = "Insert into RegisterStudent(SN,sNr,fName,lName,semester)Values(@sn,@sNr,@fName,@lName,@semester)";


Daniel Andrei Popescu

Спасибо Вам за ваш ответ!Вы правы.На самом деле я не знал, что они должны совпадать.Я знал,что должен передать значения из представления в виртуальную машину, но спасибо вам за урок.В следующий раз я не буду делать ту же ошибку :).С наилучшими пожеланиями!