【发布时间】:2021-03-08 08:09:47
【问题描述】:
我正在使用 C# 和 SQL Server 创建联系人列表,但这些语句引发了异常
SqlCommand smd = new SqlCommand("UPDATE contacts SET Name = '" + newName + "', Number = '" + newNumber + "' WHERE Name = " +nameToUpdate + "", cn);
SqlCommand smd = new SqlCommand("DELETE FROM contacts WHERE Name = " + nameToDelete + "", cn);
列名“nameToUpdate/nameToDelete”无效
【问题讨论】:
-
请不要做这样的字符串连接来将值添加到 sql 语句中。 SQL 注入错误将永远困扰您。
-
@rene 你能发表一下声明吗,我对此很陌生
-
您在
where name = '" + nameToDelete + "'"中缺少引号......请不要这样修复它。查找如何使用 SqlParameters。 -
@rene 虽然在您提到的问题中接受的答案是重复的,但原则上也回答了这个问题,但它确实使用了 AddWithValue,它在很长一段时间内被认为是bad practice
-
@derpirscher 如果你有一个更好的骗子,我很高兴为我添加一个更好的骗子。我试图找到一种以与 OP 相同的问题开始的方法,然后将其解决为比我之前的评论更好的方向。我知道这种不好的做法。
标签: c# sql-server