繁体   English   中英

如何在SQL中使用IF EXISTS(两栖动物更新,否则在SQL中插入)

[英]How to use IF EXISTS in SQL (ifexists update, else insert in SQL)

string searched = TextBox1.Text; // for example, text is 4477

...

sorgu.CommandText = "IF EXISTS(SELECT * FROM [Pins] WHERE Pin =' " + searched.ToString() + " ') BEGIN UPDATE [Pins] SET SAY= SAY+1, Pin = ' " + searched.ToString() + " ' END ELSE BEGIN INSERT INTO Pins(SAY,Pin) VALUES (+1,' " + searched.ToString() + " ') END";

...

我正在使用SAY来统计搜索次数。

该代码将列(Pins)上的所有记录更改为搜索的文本。

我的错在哪里?

您需要一个不更新所有记录的位置。 这样可以解决它。。。。。。。

IF EXISTS(SELECT * FROM [Pins] WHERE Pin = 'searched.ToString()')
BEGIN 
    UPDATE [Pins] SET SAY = SAY + 1
    WHERE [Pin] = 'searched.ToString() '
END 
ELSE 
BEGIN 
    INSERT INTO Pins(SAY, Pin) VALUES (1, 'searched.ToString()') 
END

用伪代码,你是说

IF EXISTS(SELECT Statement) UPDATE ALL ROWS

使用EXISTS进行此操作的正确方法是

UPDATE TABLE
WHERE EXISTS(Correlated SELECT Statement)

您错过了WHERE子句。

我也更喜欢使用Parameters而不是字符串串联查询(这会使您的代码容易受到SQL注入攻击)

string searched = TextBox1.Text; // for example, text is 4477

sorgu.CommandText = "IF EXISTS(SELECT * FROM [Pins] WHERE Pin = @searched) BEGIN UPDATE [Pins] SET SAY=SAY+1 WHERE Pin = @searched END ELSE BEGIN INSERT INTO Pins(SAY,Pin) VALUES (1, @searched) END";
sorgu.Parameters.AddWithValue("@searched", TextBox1.Text);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM