c# - 参数化动态 sql 不返回任何结果

标签 c# sql sql-server tsql

在 C# 应用程序中,我创建了以下由 SQL 事件探查器捕获的参数化动态 sql 语句:

执行此语句不返回任何结果:

exec sp_executesql N'SELECT IDWebFormAnswer FROM WebFormAnswers WHERE IDWebform = 55 AND IDWebFormQuestion = 478 AND (ANSWER = ''@answer0'')', N'@answer0 nvarchar(2)', @answer0=N'XL'

但是,如果我简单地将下面的 @answer0 替换为 XL,我将返回 4 行。

exec sp_executesql N'SELECT IDWebFormAnswer FROM WebFormAnswers WHERE IDWebform = 55 AND IDWebFormQuestion = 478 AND (ANSWER = ''XL'')', N'@answer0 nvarchar(2)', @answer0=N'XL'

我不明白为什么会这样?我是否构建了错误的查询?

最佳答案

使用参数时,不应将其括在引号中。如果这样做,则参数名称将变为文字字符串。使用您的代码,查询搜索包含值“@Answer0”的答案,但没有找到。

 exec sp_executesql N'SELECT IDWebFormAnswer FROM WebFormAnswers 
      WHERE IDWebform = 55 AND IDWebFormQuestion = 478 AND 
      (ANSWER = @answer0)', N'@answer0 nvarchar(2)', @answer0=N'XL'

关于c# - 参数化动态 sql 不返回任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24941922/

相关文章:

c# - WPF 自定义 ChartLine 性能问题

c# - Live Tiles UWP Windows 10 - 不更新 livetiles 队列

c# - 在 Windows 10 中全屏启动 windows 8.1 Store App

数据库连接无法完成的 Java 登录方法

c# - 绕过 .Net Core 中的授权属性以获得发布版本

sql - 具有连续日期范围记录的数据集中的最小和最大日期的日期范围

sql - 如何使用 VBA 将 null 插入到整数字段中?

sql-server - SQL 服务器和 XBRL

sql-server - SQL Server : selecting multiple columns into multiple variables in a stored procedure

sql-server - 如何在 SQL Server 中使用 LIKE 运算符找到 ' % '?