我有一个IN clause
,我不知道在运行时它将从我的配置文件中读取它们将有多少值,所以使用一些代码我设法得到这样的东西:(右侧我在运行时从我放在那里的断点处复制了它的值:
string inClause = "@RefTableK0,@RefTableK1,@RefTableK2,@RefTableK3"
然后再次通过代码执行commandText
:
Select * From Blah
Where A.GroupDescription = @GroupDescription And B.RefTable_K IN
(@RefTableK0,@RefTableK1,@RefTableK2,@RefTableK3)
然后将值放在这些参数中我这样做:
for (int i = 0; i < RtkParamNames.Length; i++)
{
drCredentialingGroup.Parameters.Add(RtkParamNames[i], RtkValues[i]);
}
现在,如果我将鼠标悬停在参数上,我会在下面的图片中看到这样的内容:
之后,当我调用Fill方法时,我得到了错误:
Exception:Select Command Exception - Must declare the scalar variable "@RefTableK0@".
Exception:Must declare the scalar variable "@RefTableK0@".
Source:.Net SqlClient Data Provider
答案 0 :(得分:0)
最后必须手动删除"@"
标志,请注意我附加的图片中添加的值没有"@"
符号,所以在for循环中我是分配值,我添加了.Replace("@", "")
。