4

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

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

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

如何解决这个问题?

4

3 回答 3

21

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

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

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

于 2012-11-07T20:22:09.253 回答
3

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

在不相关的说明中,您正在连接字符串以在 SQL 中使用?尝试使用参数,这就是它们的用途。你可能让它变得比它需要的更难。

于 2012-11-07T20:22:23.327 回答
2

由于要将单个字符替换为两个字符,因此需要使用 Replace 的 String 重载

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

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

于 2012-11-07T20:21:43.047 回答