Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.net:Sqldatasource和会话变量_Asp.net - Fatal编程技术网

ASP.net:Sqldatasource和会话变量

ASP.net:Sqldatasource和会话变量,asp.net,Asp.net,我用('P2','7T')模拟会话,该会话将传递到上面的sql命令中。 运行查询时: Protected Sub hfDualInitials_OnInit(ByVal sender As Object, ByVal e As EventArgs) Dim _DualInitials As String = "('P2','7T')" Session.Add("DualInitials", _DualInitials) Me.hfDualInitials.

我用('P2','7T')模拟会话,该会话将传递到上面的sql命令中。 运行查询时:

Protected Sub hfDualInitials_OnInit(ByVal sender As Object, ByVal e As EventArgs)        
    Dim _DualInitials As String = "('P2','7T')"
    Session.Add("DualInitials", _DualInitials)
    Me.hfDualInitials.Value = Session("DualInitials")
End Sub
它返回一些数据,但在我的Sqldatasource select命令中。它什么也不返回。我的猜测是因为(@DualInitials)中的where initials已经在hiddenfield中了,但是如果我删除了()并且只拥有@DualInitials。我将得到“靠近'@DualInitials'的语法不正确。”

是否有人知道任何解决方法或我哪里弄错了?

查看问题的答案

您有一个带有字符串参数而不是数组参数的查询。因此,当您传递“('P2','7T')”时,您认为最终的查询是

select * from AccountCancellation_Process where store_num in (select distinct storeno from franchisedata where initials in ('P2','7T'))
事实上确实如此

WHERE initials IN ('P2', '7T')

如果只有两个首字母,那么只需使用OR语句重写即可。否则,除了在另一个线程中提到的解决方案之外,我不知道什么是好的解决方案。

您不能像那样在SQL中参数化in语句。您将不得不使用SQL的字符串连接(bad)或其他一些技术,如解析分隔字符串。

如果不运行示例,我不能确定,但是如何

WHERE initials IN ('(''P2'', ''7T'')')
其中的首字母在()

我得到-1的具体原因是什么?IN语句将参数视为字符串而不是序列。我给了杰克一个解决问题的办法。世界跆拳道联盟?
WHERE initials IN ('(''P2'', ''7T'')')
WHERE initials IN (<%=Eval(@DualInitials)%>)