SQL server - 插入带有单引号的字符串

时间:2013-06-09 08:23:16

标签: c# sql-server dml

我遍历外部源并获取字符串列表。然后我使用:

将它们插入到DB中
SqlCommand command = new SqlCommand(commandString, connection);
command.ExecuteNonQuery();

其中commandString是插入命令。即

insert into MyTable values (1, "Frog") 

有时字符串包含'或'或\,插入失败 有没有一种优雅的方法来解决这个问题(即@“”或类似的东西?)

2 个答案:

答案 0 :(得分:2)

参数。

insert into MyTable values (@id, @name) 

int id = 1;
string name = "Fred";
SqlCommand command = new SqlCommand(commandString, connection);
command.Parameters.AddWithValue("id", id);
command.Parameters.AddWithValue("name", name);
command.ExecuteNonQuery();

现在name可以有任意数量的引号,它会正常工作。更重要的是,它现在可以安全地从SQL注入。

像“dapper”这样的工具(在NuGet上免费提供)使这更容易:

int id = 1;
string name = "Fred";
connection.Execute("insert into MyTable values (@id, @name)",
    new { id, name });

答案 1 :(得分:1)

您应该研究使用参数化查询。这将允许您插入数据,无论内容如何,​​还可以帮助您避免将来可能的SQL注入。

http://csharp-station.com/Tutorial/AdoDotNet/Lesson06

http://www.c-sharpcorner.com/uploadfile/puranindia/parameterized-query-and-sql-injection-attacks/