标识列的显式值

时间:2016-01-19 22:54:26

标签: c# visual-studio-2013

在Visual Studio 2013中创建了一个数据库,主键属性增量选项为true但仍然存在问题

  

类型' System.Data.SqlClient.SqlException'未处理的异常   发生在System.Data.dll

中      

附加信息:无法为身份插入显式值   表格中的列'患者'当IDENTITY_INSERT设置为OFF时。

代码:

con.Open(); 

SqlCommand cmd = new SqlCommand("INSERT INTO Patient (PId, FirstName, LastName, ContactNumber, Address, Gender, PatientRecord) VALUES ('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "','" + comboBox1.Text + "','" + textBox6.Text + "') ",con); 

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

MessageBox.Show("Saved successfully"); 

1 个答案:

答案 0 :(得分:2)

是的,这必须是因为您在Identity声明中包含INSERT列。从查询语句中删除标识列,如

INSERT INTO Patient (FirstName,LastName,ContactNumber,Address,Gender,PatientRecord) VALUES

同样,不要使用来自您的控件(如文本框)的连锁数据运行查询,因为它容易受SQL Injection攻击。而是考虑使用SqlParameter使用参数化查询。有关更多信息,请参阅MSDN。