如何使用c#使用insert和update命令

时间:2014-02-13 20:28:31

标签: c# asp.net sql-server

我有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 个答案:

答案 0 :(得分: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);

将“您的新值”更改为正确的更新语句

答案 1 :(得分: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

答案 2 :(得分:0)

我首先查询数据库以查看task_id是否存在...声明cmd,使用sql命令定义它,例如“从myTable中选择count(*),其中Task_ID ='”& Task_ID.text& “'”并将其分配给某个变量x。然后使用“if x<> 0然后 - >将此cmd定义为插入语句,ELSE - >将cmd定义为”更新myTable set blah blah = values WHERE task_ID =“& task_ID。文本。