SQL字符串中的单引号处理

JCT*_*TLK 19 .net c# sql escaping

我有一个应用程序,其中文本字段中的值被发送到数据库.

例如,我有一个带有一个字段的表单(文本框).当我按下Ok按钮时,文本字段的内容将作为记录插入到表中.我只是修剪文本框的文本并将其解压缩为变量并将其传递给我的SQL字符串.

问题是,无论何时"It's"或"Friend's"之类的单引号都被标识为字符串的结尾.在Delphi中,我看到过QuotedString要避免这种情况的事情.你的任何想法?

Rob*_*Rob 40

不要像这样构建SQL语句,它非常不安全(阅读本文).使用参数,即:

var command = new SqlCommand("select * from person where firstname = @firstname");
SqlParameter param  = new SqlParameter();
param.ParameterName = "@firstname";
param.Value         = "testing12'3";
command.Parameters.Add(param);
Run Code Online (Sandbox Code Playgroud)

  • @JCTLK:以正确的方式做到这一点.如果发现它们有用,那么习惯变大的习惯.另外,请保持代码库中充满应该复制的模式,而不是不希望的模式. (11认同)
  • @JCTLK:这并不复杂,从长远来看具有巨大的效益. (10认同)
  • 它甚至可以压缩到1行来添加一个参数:command.Parameters.AddWithValue("@ FirstName","testing12'3"); (4认同)