C# 如何使用IF EXISTS in SQL(IF EXISTS update,else insert in SQL)
我用SAY来计算搜索次数 此代码正在将列(PIN)上的所有记录更改为搜索文本C# 如何使用IF EXISTS in SQL(IF EXISTS update,else insert in SQL),c#,sql-server,if-statement,exists,insert-update,C#,Sql Server,If Statement,Exists,Insert Update,我用SAY来计算搜索次数 此代码正在将列(PIN)上的所有记录更改为搜索文本 哪里/什么是我的错 您需要有一个不更新所有记录的位置。这会解决它。。。。但这是一个可怕的问题 string searched = TextBox1.Text; // for example, text is 4477 ... sorgu.CommandText = "IF EXISTS(SELECT * FROM [Pins] WHERE Pin =' " + searched.ToString() + " ')
哪里/什么是我的错 您需要有一个不更新所有记录的位置。这会解决它。。。。但这是一个可怕的问题
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";
...
您需要有一个不更新所有记录的位置。这会解决它。。。。但这是一个可怕的问题
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";
...
在伪代码中,您的意思是
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
在伪代码中,您的意思是
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
您错过了
WHERE
子句
我还更喜欢使用参数
而不是字符串串联查询(这会使您的代码容易受到SQL注入攻击)
您错过了
WHERE
子句
我还更喜欢使用参数
而不是字符串串联查询(这会使您的代码容易受到SQL注入攻击)
update语句中没有where子句。更大的问题是,这是一个sql注入的教科书示例。在bobby tables来访之前,您需要对查询进行参数化。我会将其移动到存储过程中,这样您就可以更好地控制正在发生的事情,并且可以调试/维护它,而无需将这个讨厌的大字符串解析为易读的内容。update语句中没有where子句。更大的问题是,这是一个sql注入的教科书示例。在bobby tables来访之前,您需要对查询进行参数化。我将把它移动到一个存储过程中,这样您就可以更好地控制正在发生的事情,并且可以调试/维护它,而不必将这个讨厌的大字符串解析为易读的内容。