c# - SqlCommand 如果存在 - 更新,如果不存在 - 插入

标签 c# sql sql-server winforms

你好,我有以下声明,如果没有找到任何 id = 1 的值,我希望它插入

如果存在我想更新

我的灵感来自于此:

    UPDATE Table1 SET (...) WHERE Column1='SomeValue'
IF @@ROWCOUNT=0
    INSERT INTO Table1 VALUES (...)

但是得到这个异常:Incorrect syntax near (.

但是我找不到我在哪里犯了错误,请有人帮我解决这个问题吗?

 string sqlcom = "UPDATE firma SET (firma=@firma,ulice=@ulice,mesto=@mesto,psc=@psc,ico=@ico,dico=@dico,dph=@dph,sdph=@sdph,upo1=@upo1,raz1=@raz1) WHERE id='1' IF @@ROWCOUNT=0 INSERT INTO firma (firma,ulice,mesto,psc,ico,dico,dph,sdph,upo1,raz1) VALUES (@firma,@ulice,@mesto,@psc,@ico,@dico,@dph,@sdph,@upo1,@raz1)";

                SqlCommand prikaz =
                    new SqlCommand(sqlcom, spojeni);
                prikaz.Parameters.AddWithValue("@firma", ffirma.Text);
                prikaz.Parameters.AddWithValue("@ulice", fulice.Text);
                prikaz.Parameters.AddWithValue("@mesto", fmesto.Text);
                prikaz.Parameters.AddWithValue("@psc", fpsc.Text);
                prikaz.Parameters.AddWithValue("@ico", fico.Text);
                prikaz.Parameters.AddWithValue("@dico", fdico.Text);
                prikaz.Parameters.AddWithValue("@dph", fdph.Text);
                prikaz.Parameters.AddWithValue("@sdph", fsdph.Text);
                prikaz.Parameters.AddWithValue("@raz1", fraz1.Text);
                prikaz.Parameters.AddWithValue("@upo1", fupo1.Text);

                spojeni.Open();
                prikaz.ExecuteNonQuery();
                spojeni.Close();

最佳答案

去掉SET后的左括号

UPDATE Firma SET firma=@firma .... 

当然,还有字段列表更新后的结束字段。

但是,还应该在 IF 之前添加一个分号,以区分这两个语句

UPDATE ...... WHERE id='1'; IF @@ROWCOUNT ......

关于c# - SqlCommand 如果存在 - 更新,如果不存在 - 插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18693706/

相关文章:

c# - MailItem.GetInspector.WordEditor 在 Outlook 2013 AddIn 上始终为 NULL

c# - 从多个 Texture2D 生成一个 Texture2D

mysql - 在已排名 x 次的项目中排名最低的项目

sql - 警告 SQL71502 - 过程 <名称> 具有对对象 <名称> 的未解析引用

sql-server - 不正确的语法 : Create Procedure must be the only statement in the batch

c# - 使用 Json.net 反序列化时处理额外成员

c# - 在调试与发布版本中获取有问题代码的行号

php - 奇怪的 : can't specify target table for update in FROM clause

SQL Table Rowcount 与 SQL Server 中的 Select Count 不同

sql - 当我一次又一次用相同的值更新表时会发生什么?