Rohail Hanif Ответов: 4

Необработанное исключение типа "system.data.sqlclient.sqlexception" произошло в system.data.dll дополнительная информация: необходимо объявить скалярную переменную "@name".


private void button2_Click(object sender, EventArgs e)
{
   string insert ="insert into [dbo].[Student_Info] values (@Name,@Address,@FatherName,@Class)";
   SqlCommand cmd = new SqlCommand(insert, con);
   SqlParameter[] prm = new SqlParameter[4];
   prm[0] = new SqlParameter("@Name", SqlDbType.VarChar);
   prm[0].Value = textBox9.Text;

   prm[1] = new SqlParameter("@Address", SqlDbType.VarChar);
   prm[1].Value = textBox8.Text;

   prm[2] = new SqlParameter("@FatherName", SqlDbType.VarChar);
   prm[2].Value = textBox7.Text;
   prm[3] = new SqlParameter("@Class", SqlDbType.VarChar);
   prm[3].Value = textBox6.Text;

   con.Open();
   cmd.ExecuteNonQuery();
   con.Close();
   MessageBox.Show("Inserted Data");
}


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

пожалуйста, помогите мне, у меня есть это erroe, которое должно быть объявлено скалярной переменной

4 Ответов

Рейтинг:
2

Tomas Takac

Вы не добавили параметры в команду:

// prepare parameter array

cmd.Parameters.AddRange(prm);

// execute command

Кроме того, вы можете добавить параметры непосредственно в коллекцию:
cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = textBox9.Text;


Рейтинг:
2

Mehdi Gholam

Вы добавляете SqlParameter К SqlCommand объект, см. :
http://www.dotnetperls.com/sqlparameter[^]
Урок 06: добавление параметров в команды – C# Station[^]


Рейтинг:
0

Dave Kreskowiak

Для инструкции INSERT без каких-либо спецификаторов столбцов SQL предполагает, что каждый столбец будет иметь значение, и все значения предоставляются в точном порядке столбцов таблицы. Использование этого метода-плохая практика. Если вы измените схему таблицы, вы сломаете весь свой код, если он не будет обновлен должным образом.

Вы должны делать свои вставки, как

INSERT INTO dbo.Student_Info (Name, Address, FatherName, Class)
VALUES (@Name, @Address, @FatherName, @Class)

Обратите внимание, что я угадываю имена ваших столбцов и просто предполагаю, что они совпадают с именами ваших значений параметров.


Рейтинг:
0

F-ES Sitecore

Вы просто создаете объекты SqlParameter, а не присоединяете их к команде. После их создания присоедините их к коллекции параметров команды

cmd.Parameters.Add(prm[0]);