用字符串中的两个单引号替换所有单引号

时间:2012-11-07 20:19:09

标签: c# string

我正在尝试使用c#从DB读取值。 查询字符串包含多个单引号 - 例如:Esca'pes'(正在从文本文件中读取查询字符串)

因此,我希望在形成SQL查询之前用两个单引号替换所有单引号。我的代码如下:

if (name.Contains('\''))
{
    name = name.Replace('\'','\''');  
}

如何解决这个问题?

3 个答案:

答案 0 :(得分:17)

使用字符串,而不是字符文字。

name = name.Replace("'", "''");

然而,这听起来像是将SQL字符串连接在一起。由于SQL注入的风险,这在现代应用程序设计中是一个巨大的“ DO NOT ”规则。请改用SQL参数。每个现代DBMS平台都支持它们,包括带有SQL Server和MySQL的ADO.NET,甚至Access都支持它们。

答案 1 :(得分:2)

由于您想要用两个字符替换单个字符,因此需要使用Replace

的String重载
if (name.Contains('\''))
{
    name = name.Replace("'","''");  
}

(注意:单引号不需要像字符符号一样在字符串中转义。)

答案 2 :(得分:2)

name = name.Replace("'","''");

在一个不相关的说明中,你是串联用于SQL的字符串?尝试参数,这就是他们的意思。你可能正在变得比它需要的更难。