在c#中使用主键向数据库插入行最好的方法是什么?

本文关键字:方法 是什么 插入 数据库 | 更新日期: 2023-09-27 18:02:37

很抱歉我的标题有点模糊。基本上,我有一个呼叫记录应用程序,使用数据库与2表(客户和记录)来添加,删除和搜索记录。我在记录中有一列叫做'CallID'我用它来保持调用的唯一性所以我可以用CallID来删除特定的记录。然而,问题在于我添加调用函数。我目前设置的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());
        }
    }

您现在可能知道,简单地将列表中的项数增加1是一种笨拙的处理方法,并且在删除记录后会导致问题,而您想要添加更多记录。我想知道是否有一种方法可以做我想做的事情,但以一种更好的方式:)

谢谢!

在c#中使用主键向数据库插入行最好的方法是什么?

设置CallID为自动递增

ALTER TABLE Records AUTO_INCREMENT=1

然后更改insert语句,使其排除

字段。
INSERT Records (CustomerID, CustomerName, Telephone, DateAndTime, Status, Description) VALUES (@CustomerID, @CustomerName, @Telephone, @DateAndTime, @Status, @Description)

CallID字段的值将由数据库处理任何后续添加的行。

按照这种方式进行(如果您没有在数据库中使用自动增量),它可能会对您有所帮助。

将最后一个值绑定到标签或文本框,

SqlConnection con = new SqlConnection("Your Connection String");
con.Open();
SqlCommand cmd = new SqlCommand("Select Max(CallID) from Yourtablename",con);    
SQlDataReader dr = cmd.ExecuteReader();
while(dr.Read())
{
    Label1.Text = dr.GetInt32(0).ToString();
}
con.Close();
在上面的代码中像这样修改
cmd.Parameters.AddWithValue("CallID", Convert.ToInt32(Label1.Text));

将CallID列的数据类型设置为int

请告诉我进一步的问题。