如果存在则更新其他插入

我想知道下一段代码是否正确:

SqlCommand cmd = new SqlCommand( "IF NOT EXISTS(SELECT count(*) from Raspunsuri where id_intrebare=2)" + "Insert INTO Raspunsuri VALUES(@raspuns,@cnp,@data,2,@ip,@idsesiune)" + "else" + "UPDATE Raspunsuri SET raspuns=@raspuns,cod_numeric_personal=@cnp,data_raspuns=@data,id_intrebare=2,ip_user=@ip,id_sesiune=@idsesiune WHERE id_intrebare=2", con); 

所有参数都是正确的,我想插入,但似乎这段代码不做插入或更新。你有任何建议吗?这是一个结合c#的SQL查询..

检查由该命令创建的字符串:某些单词之间需要空格。

  SqlCommand cmd = new SqlCommand("IF NOT EXISTS(SELECT 1 from Raspunsuri where id_intrebare=2)" + " Insert INTO Raspunsuri VALUES(@raspuns,@cnp,@data,2,@ip,@idsesiune)" + " else" + " UPDATE Raspunsuri SET raspuns=@raspuns,cod_numeric_personal=@cnp,data_raspuns=@data,id_intrebare=2,ip_user=@ip,id_sesiune=@idsesiune WHERE id_intrebare=2", con); 

描述

不,因为您选择始终具有值的count

选择一列或*

样品

 SqlCommand cmd = new SqlCommand( "IF NOT EXISTS(SELECT id_intrebare from Raspunsuri where id_intrebare=2) " + "Insert INTO Raspunsuri VALUES(@raspuns,@cnp,@data,2,@ip,@idsesiune) " + "else " + "UPDATE Raspunsuri SET raspuns=@raspuns,cod_numeric_personal=@cnp,data_raspuns=@data,id_intrebare=2,ip_user=@ip,id_sesiune=@idsesiune WHERE id_intrebare=2", con); 

你为什么不使用MERGE命令?

您可以先尝试在SQL Server Management Studio窗口中执行查询。 这将为您提供一种简单的方法来调试这些东西

我认为“else”语句之间缺少空格还确保您已在values部分中提供了所有列