如何在数据库中插入主键?

时间:2014-06-13 06:27:19

标签: c# winforms

因为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", ????);

4 个答案:

答案 0 :(得分:3)

如果你想让你的empid自动增加,那么你必须设置它的IDENTITY。

如果您使用的是MSSQL,请使用下面的图像设置表的IDENTITY。

enter image description here

答案 1 :(得分:2)

如果SQL EmpIdIdentity,则无需传递

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);

SET IDENTITY_INSERT (Transact-SQL)