【发布时间】:2011-12-26 16:30:59
【问题描述】:
我有一个使用名为“name”的参数调用的函数,现在它可以正常工作了.. 直到我在其中使用 ' 进行搜索.. 所以我将其作为名称发送
Plastic & Foam 3'X5' XLT
当我发送它时,它在网站中返回空(没有错误),但如果我发送 jusr Plastic & Foam 它工作正常,它返回正常。现在在 sql 部分,当我像这样通过管理工作室发送查询时,我得到了这个
exec sp_productSearch 'Plastic & Foam 3''X5'' XLT'
SELECT Name FROM PProducts WHERE NAME LIKE '%Plastic & Foam 3'X5' XLT'
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'X5'.
在 C# 中,我正在发送文本列表
Server.HtmlEncode(txtproductname.Text.Trim().Replace("'", "''"))
任何想法我可能做错了什么?
PS:存储过程很简单,就是这样的
Select Name from PProducts Where NAME LIKE '%' + @NAME + '%' ;
谢谢。
【问题讨论】:
-
在您的搜索查询/数据库中允许
'是一种非常糟糕的做法(sql 注入) -
我们需要查看 C# 代码,而不是 SQL 查询,才能回答这个问题。另外,请更改标题以总结您的问题。谢谢。
-
请包含您的 C# 代码,以显示您调用
sp_productSearch存储过程的位置。我怀疑您需要在 SQL 查询中使用参数,而不是注入字符串的值来直接搜索到您的存储过程调用。 -
为什么你
HtmlEncode任何东西当它转到 SQL Server 时?你在使用参数化查询吗? -
请将整个过程贴出来,让我们看看您是否需要使用动态 SQL。
标签: c# asp.net visual-studio-2010 sql-server-2008