我遍历外部源并获取字符串列表。然后我使用:
将它们插入到DB中SqlCommand command = new SqlCommand(commandString, connection);
command.ExecuteNonQuery();
其中commandString是插入命令。即
insert into MyTable values (1, "Frog")
有时字符串包含'或'或\,插入失败 有没有一种优雅的方法来解决这个问题(即@“”或类似的东西?)
答案 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/