因为emp_id
是pk且没有文本框
cmd.CommandText = "INSERT INTO cntc_employee (emp_id,emp_f_name,emp_l_name,emp_alias,emp_contact_no,emp_address,emp_company,emp_bdate) VALUES(@fname,@lname,@alias,@contact,@address,@company,@bdate)";
cmd.Connection = con;
cmd.Parameters.AddWithValue("@empid", ????);
cmd.Parameters.AddWithValue("@fname", textBox1.Text);
cmd.Parameters.AddWithValue("@lname", textBox2.Text);
cmd.Parameters.AddWithValue("@alias", textBox3.Text);
cmd.Parameters.AddWithValue("@contact", textBox4.Text);
cmd.Parameters.AddWithValue("@address", textBox5.Text);
cmd.Parameters.AddWithValue("@company", textBox6.Text);
对于empid
,我不知道使用哪个命令
cmd.Parameters.AddWithValue("@empid", ????);
答案 0 :(得分:3)
如果你想让你的empid自动增加,那么你必须设置它的IDENTITY。
如果您使用的是MSSQL,请使用下面的图像设置表的IDENTITY。
答案 1 :(得分:2)
如果SQL 中EmpId
为Identity
,则无需传递,
cmd.CommandText = "INSERT INTO cntc_employee (emp_f_name,emp_l_name,emp_alias,emp_contact_no,emp_address,emp_company,emp_bdate) VALUES(@fname,@lname,@alias,@contact,@address,@company,@bdate)";
如果不是,那么需要在编程语言中提及或生成逻辑以创建Emp ID
答案 2 :(得分:2)
如果 emp_id
是自动生成的主键,只需不在列列表中指定它(因此没有理由提供绑定值) - 这包括SQL Server中的IDENTITY列和MySQL中的AUTO_INCREMENT列等。
// Additional columns removed for sake of example
cmd.CommandText = "INSERT INTO cntc_employee (emp_f_name) values (@fname)";
cmd.Parameters.AddWithValue("@fname", textBox1.Text);
假设是这种情况,那么数据库将看到emp_id
尚未分配值,并且在插入记录时将使用列的“下一个”可用值。
如果emp_id
不是自动生成的代理键,那么找出谁设计了系统,并询问它们应该是什么以及应该如何生成:)
答案 3 :(得分:1)
如果您确实想要出于某种原因在字段empid中插入特定值,则必须将Identity_insert设置为on。
// "SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table { ON | OFF }"
cmd.CommandText = "SET IDENTITY_INSERT dbo.cntc_employee ON; ";
cmd.CommandText += "INSERT INTO cntc_employee (emp_id,emp_f_name,emp_l_name,emp_alias,emp_contact_no,emp_address,emp_company,emp_bdate) VALUES(@empid,@fname,@lname,@alias,@contact,@address,@company,@bdate)";
cmd.Connection = con;
cmd.Parameters.AddWithValue("@empid", textBoxXx.Text);
cmd.Parameters.AddWithValue("@fname", textBox1.Text);
cmd.Parameters.AddWithValue("@lname", textBox2.Text);
cmd.Parameters.AddWithValue("@alias", textBox3.Text);
cmd.Parameters.AddWithValue("@contact", textBox4.Text);
cmd.Parameters.AddWithValue("@address", textBox5.Text);
cmd.Parameters.AddWithValue("@company", textBox6.Text);