替换SQL中的记录

时间:2012-03-02 04:21:59

标签: c# asp.net sql

我在db中有一个表,用于存储用户名,月份,费用和价格。用户将从下拉菜单中选择月份。任何一个月。但是让我们说如果他之前已经选择了1月,那么如果他再次登录并再次选择1月,那么系统将用新的记录替换1月份的旧记录。我的问题是,如果用户选择与以前相同的月份,如何在db中替换?

谢谢

2 个答案:

答案 0 :(得分:3)

作为查询的一部分进行检查,如果月份条目已存在,请执行更新而不是插入

IF NOT EXISTS (select * from ExpTab where month = @mnth)
BEGIN
  Insert into ExpTab (username,month,ex1,p1) Values (@name,@mnth,@ex1s,@p1s)
END
ELSE
  Update ExpTab Set username = @name, ex1 = @ex1s, p1 = @p1s where month = @mnth

答案 1 :(得分:1)

试试这个:

protected void Button1_Click(object sender, EventArgs e)
{
    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString);

        SqlCommand deleteCmd = new SqlCommand("DELETE FROM ExpTab WHERE username = @name AND month = @mnth", conn);
        deleteCmd.CommandType = CommandType.Text;
        deleteCmd.Parameters.AddWithValue("@name", Membership.GetUser().UserName);
        deleteCmd.Parameters.AddWithValue("@mnth", Label1.Text);
        deleteCmd.ExecuteNonQuery();

    SqlCommand cmd = new SqlCommand("Insert into ExpTab (username,month,ex1,p1) Values (@name,@mnth,@ex1s,@p1s)", conn);

    cmd.CommandType = CommandType.Text;
    cmd.Parameters.AddWithValue("@name", Membership.GetUser().UserName);
    cmd.Parameters.AddWithValue("@mnth", Label1.Text);
    .
    .
    .
    .