簡體   English   中英

如果存在更新,否則插入

[英]if exists update else insert

我想知道下一段代碼是否正確:

 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部分提供了所有列

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM