在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是一种笨拙的处理方法,并且在删除记录后会导致问题,而您想要添加更多记录。我想知道是否有一种方法可以做我想做的事情,但以一种更好的方式:)
谢谢!
设置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
请告诉我进一步的问题。