Asp.net SQLDataSource:在更改参数(或数组参数?)的情况下多次运行select命令

Asp.net SQLDataSource:在更改参数(或数组参数?)的情况下多次运行select命令,asp.net,sql,vb.net,Asp.net,Sql,Vb.net,我目前正在运行一个VB.net/ASPX web应用程序,它根据用户安全组级别从数据库中获取特定记录。我想做的是,如果用户来自多个安全组,则获取他们所在的每个安全组的报告 在where子句中,该行存在: 和b.security\u level\u id=@security\u level\u id 这只允许将一个安全级别\u id传递到select查询中 是否可以多次运行查询并更改参数: 或者我可以用这个参数生成一个数组,并在一个查询中循环遍历它吗 谢谢 已解决: 嗯。我通过在实际的VB代码中

我目前正在运行一个VB.net/ASPX web应用程序,它根据用户安全组级别从数据库中获取特定记录。我想做的是,如果用户来自多个安全组,则获取他们所在的每个安全组的报告

在where子句中,该行存在:
和b.security\u level\u id=@security\u level\u id

这只允许将一个
安全级别\u id
传递到select查询中

是否可以多次运行查询并更改参数:

或者我可以用这个参数生成一个数组,并在一个查询中循环遍历它吗

谢谢

已解决:

嗯。我通过在实际的VB代码中创建select命令解决了这个问题。。它消除了对参数的需要,因此我可以将变量直接传递到查询字符串中

我用过: 受保护的子SqlDS_ReportCategories_Init(ByVal sender作为对象,ByVal e作为System.EventArgs)处理SqlDS_ReportCategories.Init

要获取数据源的句柄,请执行以下操作: Dim s作为SqlDataSource=CType(发送方,SqlDataSource) 创建它的对象引用

然后 s、 SelectCommand=“某些查询”+变量+“查询的其余部分”

希望这对未来的人们有所帮助

  • 垫子

您可以在中使用SQL
同时搜索多个项目

首先要做的是将安全级别收集到一个逗号分隔的列表中:

Dim sbSQL As New System.Text.StringBuilder(500)

For Each wSecurityLevel As Integer In theUser.SecurityLevels
    If sbSQL.Length <> 0 Then
        sbSQL.Append(",")     
    End If
    sbSQL.Append(wSecurityLevel)
Next

您可以在
中使用SQL
同时搜索多个项目

首先要做的是将安全级别收集到一个逗号分隔的列表中:

Dim sbSQL As New System.Text.StringBuilder(500)

For Each wSecurityLevel As Integer In theUser.SecurityLevels
    If sbSQL.Length <> 0 Then
        sbSQL.Append(",")     
    End If
    sbSQL.Append(wSecurityLevel)
Next
已解决:

嗯。我通过在实际的VB代码中创建select命令解决了这个问题。。它消除了对参数的需要,因此我可以将变量直接传递到查询字符串中

我使用:受保护的子SqlDS_ReportCategories_Init(ByVal sender作为对象,ByVal e作为System.EventArgs)处理SqlDS_ReportCategories.Init

获取我的数据源的句柄,后跟:Dim s As SqlDataSource=CType(sender,SqlDataSource)以创建它的对象引用

然后s.SelectCommand=“某些查询”+变量+“查询的其余部分”

希望这对未来的人们有所帮助

已解决:

嗯。我通过在实际的VB代码中创建select命令解决了这个问题。。它消除了对参数的需要,因此我可以将变量直接传递到查询字符串中

我使用:受保护的子SqlDS_ReportCategories_Init(ByVal sender作为对象,ByVal e作为System.EventArgs)处理SqlDS_ReportCategories.Init

获取我的数据源的句柄,后跟:Dim s As SqlDataSource=CType(sender,SqlDataSource)以创建它的对象引用

然后s.SelectCommand=“某些查询”+变量+“查询的其余部分”


希望这对未来的人们有所帮助

您使用什么进行查询?我使用'SelectCommand'参数来表示您使用什么进行查询?我使用'SelectCommand'参数来表示我已经计算出了大部分内容,但现在数据库抱怨“将nvarchar值'3,5,5,99'转换为数据类型int的列时出现语法错误。”因此,我不确定下一步该怎么办。请确保不要将值列表用引号括起来:如果这样做,SQL会将其视为一个长字符串,而不是单个值。链接到Erland Sommarskog页面的强制性链接:我已经解决了大部分问题,但现在数据库正在抱怨“将nvarchar值'3,5,5,99'转换为数据类型为int的列时出现语法错误。”因此,我不确定下一步该怎么办。请确保不要将值列表用引号括起来:如果这样做,SQL会将其视为长字符串而不是单个值。必须链接到Erland Sommarskog的页面: