我已经搜索过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()但没有运气。在此先感谢您提供的任何帮助。
.ToString()
您应该始终使用参数化查询。它们可帮助您避免遇到类似情况以及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);