SQL字符串中的单引号处理

时间:2011-01-10 07:53:13

标签: c# sql .net escaping

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

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

问题在于,无论何时“It's”或“Friend's”等单引号都被识别为字符串的结尾。在Delphi中,我已经看到类似QuotedString的东西来避免这种情况。你的任何想法?

3 个答案:

答案 0 :(得分:37)

不要像这样构建SQL语句,它是非常不安全的(read this)。使用参数,即:

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);

答案 1 :(得分:0)

使用.Replace("'","''''")

例如

string name = txtName.Text.Replace("'","''''");

现在name可以作为存储过程中的参数等传递。

答案 2 :(得分:-2)

希望这会对你有帮助......

public static string DoQuotes(string sql)
    {
        if (sql == null)
            return "";
        else
            return sql.Replace("'", "''");
    }