C# 参数化SQL查询不返回结果,字符串格式的查询返回正确的结果

C# 参数化SQL查询不返回结果,字符串格式的查询返回正确的结果,c#,sql,.net,tsql,C#,Sql,.net,Tsql,我有一个SQL表,试图从中搜索与用户提供的动态搜索字符串匹配的订单,然后用结果填充OrderDataTable。以下是C#代码: 即使对于我在SSMS中运行的返回大量结果的查询,也不会返回任何结果。此外,当我删除参数化并用搜索框中的文本替换@searchstring时,查询功能正常。我不想让应用程序对注入开放,但我不知道我使用参数的方式有什么问题。你的意思是: CHARINDEX(@searchstring, ordernumber) 不是 (同样客户名称) @searchstring是参数“

我有一个SQL表,试图从中搜索与用户提供的动态搜索字符串匹配的订单,然后用结果填充OrderDataTable。以下是C#代码:

即使对于我在SSMS中运行的返回大量结果的查询,也不会返回任何结果。此外,当我删除参数化并用搜索框中的文本替换@searchstring时,查询功能正常。我不想让应用程序对注入开放,但我不知道我使用参数的方式有什么问题。

你的意思是:

CHARINDEX(@searchstring, ordernumber)
不是

(同样
客户名称


@searchstring
是参数
“@searchstring”
是一个文本字符串,包含13个字符,以
@
开头,以
g

结尾。我认为单引号会扼杀参数化查询。这就是为什么SQL将其视为字符串文字,而不是参数。您是否调试过它并将鼠标悬停在OrderDisplayViewModel.SearchString上?@Marc比您早11秒获得了它。正是这样-那些单引号在双引号旁边是如此的不可见,以至于我对它们视而不见。非常感谢。
CHARINDEX(@searchstring, ordernumber)
CHARINDEX('@searchstring', ordernumber)