如何使用C#编写插入和更新命令

3

我有一个GridView,我想要从表格中检查Task_ID,如果存在,则更新记录,但如果表中不存在Task_ID,则想要将其插入到我的表格中。 我现在的代码完成了插入部分,但没有完成更新代码的部分。我想知道如何在同一段代码中完成这个。请帮忙,谢谢。 以下是我的代码:

int index = 0;
foreach (GridViewRow row in myGV.Rows)
{
    if (row.RowType == DataControlRowType.DataRow)
    {

        Label ID = row.FindControl("lbl_ID") as Label;

        string UID = Request.Form[row.FindControl("hfUId").UniqueID];

        DateTime strDate = DateTime.Now;
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["myCon"].ConnectionString);
        SqlCommand cmd = new SqlCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "insert into myTable(TID, USR_ID, UPDT_DT) values(@ID, @USR_ID, @UPDT_DT) ";

        cmd.Parameters.Add("@ID", SqlDbType.VarChar).Value = ID.Text;
        cmd.Parameters.Add("@USR_ID", SqlDbType.VarChar).Value = UID.ToString();
        cmd.Parameters.Add("@UPDT_DT", SqlDbType.VarChar).Value = strDate.Date;
        cmd.Connection = con;
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
        con.Dispose();
        cmd.Dispose();
    }

    index++;
}
3个回答

3

SQL中有一个MERGE命令可以实现这个目的。以下是一个示例,可能对您有用:

Merge myTable As T
    Using (Select Task_ID From myTable) As Src (Src_ID)
    ON (T.Task_ID = Src.Src_ID)
    WHEN MATCHED THEN
        UPDATE SET T.UPDT_DT = 'your new value'
    WHEN NOT MATCHED THEN   
        INSERT (TASK_ID, USR_ID, UPDT_DT)
        VALUES (@TASK_ID, @USR_ID, @UPDT_DT);

将“your new value”更改为正确的更新语句


1
将命令文本替换为以下内容:

if not exists (select task_id from mytable where task_id = @task_id)  
insert into myTable(TASK_ID, USR_ID, UPDT_DT) values(@TASK_ID, @USR_ID, @UPDT_DT)
else
update mytable set USR_ID = @USR_ID, UPDT_DT = @UPDT_DT where task_id = @TASK_ID

0

我首先会查询数据库,看看任务ID是否存在...声明cmd,并使用一个SQL命令定义它,如“Select count(*) from myTable where Task_ID = '”& Task_ID.text &“'”,并将其分配给一些变量x。 然后跟随“if x <> 0 then ->在此处定义插入语句,否则 ->将cmd定义为“Update myTable set blah blah = values WHERE task_ID = ”& task_ID.text。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接