有没有办法将LIST(String)与SQL Server数据库集成?

时间:2013-10-11 14:21:50

标签: asp.net sql-server vb.net

过去,当我们需要排除属于某个类别的成员时,我们使用generic.list控件来执行此操作,如下例所示:

首先,我们进行查询以列出符合特定条件的所有符合条件的用户。

sql="select ... from ourTable where certain conditions are true'

然后,我们列出下面列表中的某些群组,其中任何群组位于该列表中的用户将被排除在参与之外。

        Dim listOfGroups = New List(Of String)(
         { _
              "ML02A", "ML02B", "ML03", "ML04", "ML05", "ML06", "ML07A", "ML07B", "AP05", _
             "AP06", "AP07A", "AP07B", "AP09A", "AP10", "AP12A" _
        })

        If Not listOfGroups .Contains(txtPre.Text) Then
            lblNA.Text = "Members in group<b>" & txtPre.Text & "</b> are not eligible to participate in this event."
        End If

这对我们来说一直很美妙。

这一次,名单已超过20万;太多,无法手动包含在下面的列表中。

是否可以将列表与SQL Server数据库集成?

或许,有没有办法使用存储过程处理这个并通过我们的asp.net应用程序发出相同的排他性消息?

我们的应用程序是用vb.net编写的,但对于我可以转换为vb.net的任何c#解决方案我都非常高兴

可以像sql server中的通配符一样使用generic.list控件吗?

例如,在SQL Server中,我们可以说,如果组LIKE'KT%'然后消息。

可以在generic.list控件中使用LIKE吗? 非常感谢。

1 个答案:

答案 0 :(得分:0)

我试着按照自己的方式制定问题:
你有一个像

这样的查询
select * form TableName where Field in ('ML02A', 'ML02B', 'ML03', ...)

从一个未指明的原因,数据集在数据库中的程序号中,并且列表很长,导致查询速度很慢。

对于类似的情况,我使用临时表和SqlBulkCopy Class。 (代码应该在编号列表之后但格式化不正确。)

Dim BulkData As SqlBulkCopy
BulkData = New SqlBulkCopy(cn)
BulkData.DestinationTableName = mDBTableName
BulkData.WriteToServer(mTableToTransfer)
  1. 为数据mDBTableName创建一个表(用于永久使用服务器缓存 一个比临时更好 - #)
  2. 创建具有相同结构的DataTable
  3. 将数据从list放到DataTable mTableToTransfer
  4. 转移到服务器
  5. 使用join连接运行查询
  6. 如果表格结构不匹配,则可以使用BulkData.ColumnMappings.Add