C#带更新的SqlCommand查询
我试图找到它。但我找不到确切的答案。所以我决定问这个问题。我需要你的帮助 我希望在不覆盖借方、分数列的情况下将值添加到表值中。它将增加当前值C#带更新的SqlCommand查询,c#,sql-server,sqlcommand,C#,Sql Server,Sqlcommand,我试图找到它。但我找不到确切的答案。所以我决定问这个问题。我需要你的帮助 我希望在不覆盖借方、分数列的情况下将值添加到表值中。它将增加当前值 cmd = new SqlCommand("UPDATE Users SET Debit=@debit, Score=@score WHERE Phone=@phone", con); con.Open();
cmd = new SqlCommand("UPDATE Users SET Debit=@debit,
Score=@score
WHERE Phone=@phone", con);
con.Open();
cmd.Parameters.AddWithValue("@phone", textBox1.Text);
cmd.Parameters.AddWithValue("@debit", textBox2.Text);
cmd.Parameters.AddWithValue("@score", textBox3.Text);
cmd.ExecuteNonQuery();
MessageBox.Show("Амжилттай");
con.Close();
例如:
Table, Phone: 999 | Debit: 1500 | Score: 100 //current <br>
我知道这样的SQL查询。但是我不知道如何在SqlCommand
UPDATE Users
SET Debit = Debit + [user input], Score = Score + [user input]
WHERE = Phone
有什么建议吗
(对不起,我的英语很糟糕,我希望你们能理解我的意思)
谢谢如果您想添加,只需添加:
请注意逐字字符串@“…”
语法。请不要忘记处理(explicitClose
是反模式):
如果要添加,只需添加:
请注意逐字字符串@“…”
语法。请不要忘记处理(explicitClose
是反模式):
您可以使用+=运算符进行更新。像这样更改sql命令
UPDATE Users SET Debit+=@debit,
Score+=@score
WHERE Phone=@phone
您可以使用+=运算符进行更新。像这样更改sql命令
UPDATE Users SET Debit+=@debit,
Score+=@score
WHERE Phone=@phone
这会对你有帮助的……试着用这种方式
SqlCommand cmd = new SqlCommand("UPDATE Users SET Debit = Debit + " + textBox2.Text + ", Score = Score + " + textBox3.Text + " WHERE Phone = " + textBox1.Text + "", con);
con.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("Амжилттай");
con.Close();
或
这会对你有帮助的……试着用这种方式
SqlCommand cmd = new SqlCommand("UPDATE Users SET Debit = Debit + " + textBox2.Text + ", Score = Score + " + textBox3.Text + " WHERE Phone = " + textBox1.Text + "", con);
con.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("Амжилттай");
con.Close();
或
您的SqlCommand看起来不错,有什么问题?您的SqlCommand看起来不错,有什么问题?请不要硬编码sql,而是使用参数(如问题中所示),但输出将与Dmitry Bychenko相同。是的,输出将相同,但:1。(几乎)所有查询都是不同的(因此优化器必须为每个查询生成计划);2.该查询易于sql注入:假设
textBox2.Text
包含,比如说,123--代码>。在这种情况下,您将得到以下查询:“更新用户设置Debit=Debit+123——…”(请注意**注释**
--)。所以输入
123;--`将更新整个表,而不仅仅是所需的电话Ohhh..是的,非常感谢Dmitry Bychenko…我的查询不安全。我尝试了这种方法,但没有解决我的问题。我更喜欢使用参数请不要硬编码sql,而是使用参数(如问题中所述),但输出将与Dmitry Bychenko相同。是的,输出将是相同的,但是:1。(几乎)所有查询都是不同的(因此优化器必须为每个查询生成计划);2.该查询易于sql注入:假设textBox2.Text
包含,比如说,123--代码>。在这种情况下,您将得到以下查询:“更新用户设置Debit=Debit+123——…”(请注意**注释**
--)。所以输入
123;--`将更新整个表,而不仅仅是所需的电话Ohhh..是的,非常感谢Dmitry Bychenko…我的查询不安全。我尝试了这种方法,但没有解决我的问题。我更喜欢使用参数来解决我的问题。谢谢我真的很感激。:)它解决了我的问题。谢谢我真的很感激。:)
SqlCommand cmd = new SqlCommand("UPDATE Users SET Debit = Debit + " + textBox2.Text + ", Score = Score + " + textBox3.Text + " WHERE Phone = " + textBox1.Text + "", con);
con.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("Амжилттай");
con.Close();
SqlCommand cmd = new SqlCommand("UPDATE Users SET Debit = Debit + @debit, Score = Score + @score WHERE Phone = @phone", con);
con.Open();
cmd.Parameters.AddWithValue("@phone", textBox1.Text);
cmd.Parameters.AddWithValue("@debit", textBox2.Text);
cmd.Parameters.AddWithValue("@score", textBox3.Text);
cmd.ExecuteNonQuery();
MessageBox.Show("Амжилттай");
con.Close();