INSERT与更新

Rar*_*res 1 c# sql asp.net

我有以下查询:

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["chestionar"].ConnectionString);
SqlCommand cmd = new SqlCommand("INSERT INTO Raspunsuri Values(@raspuns,@cnp,@data,'1',@ip,@idsesiune)", con);

cmd.Parameters.AddWithValue("@cnp", Session["sesiune_cnp"]);
cmd.Parameters.AddWithValue("@raspuns", textbox1.Text);
cmd.Parameters.AddWithValue("@data", DateTime.Now.ToLocalTime());
cmd.Parameters.AddWithValue("@ip",ip);
cmd.Parameters.AddWithValue("@idsesiune", id_sesiune);

try
{
    con.Open();
    cmd.ExecuteNonQuery();
    Response.Redirect("User2.aspx");
}
catch (Exception ex)
{
    Console.WriteLine("Error:" + ex);
}
finally
{
    con.Close();
}
Run Code Online (Sandbox Code Playgroud)

我需要的是看表中是否有任何记录,如果有更新,否则插入它.我怎么能实现呢?

Cur*_*urt 6

这可能最好在存储过程中完成,因为涉及的脚本量很大(内联时会很混乱!).

将您的参数传递给存储过程并执行以下操作:

IF EXISTS(SELECT cnp FROM Raspunsuri WHERE cnp=@cnp)
BEGIN
    UPDATE ...
    WHERE cnp=@cnp
END
ELSE
BEGIN
    INSERT INTO....
END
Run Code Online (Sandbox Code Playgroud)

假设@cnp是你的主键


然后您的SqlCommand将更改为:

SqlCommand cmd = new SqlCommand("sp_StoredProcedureName", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@cnp", Session["sesiune_cnp"]);
cmd.Parameters.AddWithValue("@raspuns", textbox1.Text);
cmd.Parameters.AddWithValue("@data", DateTime.Now.ToLocalTime());
cmd.Parameters.AddWithValue("@ip",ip);
cmd.Parameters.AddWithValue("@idsesiune", id_sesiune);
Run Code Online (Sandbox Code Playgroud)