对不起我的模糊标题。基本上,我有一个呼叫记录应用程序,它使用带有2个表(客户和记录)的数据库来添加,删除和搜索记录。我在Records中有一个名为' 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());
}
}
您现在可能知道,简单地将一个增加到列表中的项目数是一种笨拙的做事方式,并且在删除记录并且您想要添加更多内容后会导致问题。我想知道是否有办法按照更好的方式做我想做的事情:)
谢谢!
答案 0 :(得分:2)
将CallID
设置为自动增量
ALTER TABLE Records AUTO_INCREMENT=1
然后更改您的insert语句,使其排除字段
INSERT Records (CustomerID, CustomerName, Telephone, DateAndTime, Status, Description) VALUES (@CustomerID, @CustomerName, @Telephone, @DateAndTime, @Status, @Description)
数据库将为添加的任何后续行处理CallID
字段的值。
答案 1 :(得分:1)
以这种方式继续(如果你不在数据库中使用自动增量,那么它可能对你有用。)
将您的上一个值绑定到标签或文本框中,
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。
请告诉我更多问题。