对不起,我的名字模糊不清。基本上,我有一个呼叫记录应用程序,它使用一个包含两个表(客户和记录)的数据库来添加、删除和搜索记录。我在记录中有一个名为“CallID”的列,用于帮助保持调用的唯一性,因此我可以使用CallID删除特定的记录。但是,问题在于我添加了call函数。我现在拥有它,所以CallID是列表中项目的数量,增量为1:
private void addcall_btn_Click(object sender, EventArgs e)
{
try
{
//This is my addcall click event that inserts a row in 'Records' table using what the user has entered into the fields
string sql = "INSERT Records (CustomerID, CallID, CustomerName, Telephone, DateAndTime, Status, Description) VALUES (@CustomerID, @CallID, @CustomerName, @Telephone, @DateAndTime, @Status, @Description)";
SqlConnection conn = ConnectionString();
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Connection = conn;
cmd.Parameters.AddWithValue("CustomerID", customerID_cb.Text);
cmd.Parameters.AddWithValue("CallID", (CallListBox.Items.Count + 1));
cmd.Parameters.AddWithValue("DateAndTime", DateTime.Now);
cmd.Parameters.AddWithValue("Status", status_cb.Text);
cmd.Parameters.AddWithValue("Description", description_txt.Text);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
MessageBox.Show("Record Created");
this.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
现在您可能已经知道,简单地将一个项增加到列表中的项数是一种笨拙的做法,并且在删除记录并希望添加更多项后,这会导致问题。我想知道是否有一种方法可以做我想做的事,但是用一种更好的方法:)
谢谢!
最佳答案
将CallID
设置为自动递增
ALTER TABLE Records AUTO_INCREMENT=1
然后更改insert语句,使其排除字段
INSERT Records (CustomerID, CustomerName, Telephone, DateAndTime, Status, Description) VALUES (@CustomerID, @CustomerName, @Telephone, @DateAndTime, @Status, @Description)
然后,
CallID
字段的值将由数据库处理添加的任何后续行。关于c# - 使用C#中的主键将行插入数据库的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23562517/