小编典典

通过C#在SQL INSERT INTO中转义特殊字符

sql

我已经搜索过google,但还没有找到针对我的问题的任何解决方案。基本上,我有一个在图库中设置的评论供稿(类似于Facebook或stackoverflow的评论)。用户可以发表评论,也可以阅读其他用户发表的评论。一切正常。但是,如果用户尝试使用撇号发布评论,则会收到一个很好的Web应用程序错误消息:

‘s’附近的语法不正确。字符串’)’后的引号引起来。

我要发布到SQL的注释是 81。 我想要一个将 所有 特殊字符都转义的解决方案,以便无论用户键入什么内容,都不会出错。

背后的代码

Fetcher.postUserComments(connectionString, imagePath, comments.ToString(), userId);

提取器

sqlCom.CommandText = "INSERT INTO dbo.Table(userId, imagePath, userComments, dateCommented) VALUES ('" + userId + "', '" + imagePath + "', '" + comments + "', '" + theDate + "')";

数据类型是字符串,我也尝试过.ToString()但没有运气。在此先感谢您提供的任何帮助。


阅读 290

收藏
2021-05-23

共1个答案

小编典典

您应该始终使用参数化查询。它们可帮助您避免遇到类似情况以及SQL
Injection攻击

sqlCom.CommandText = "INSERT INTO dbo.Table(userId, imagePath, userComments, dateCommented) VALUES (@userId, @imagePath, @userComments, @dateCommented)";

sqlCom.Parameters.AddWithValue("@userId", userId);
sqlCom.Parameters.AddWithValue("@imagePath", imagePath);
sqlCom.Parameters.AddWithValue("@userComments", comments);
sqlCom.Parameters.AddWithValue("@dateCommented", theDate);
2021-05-23