Sql 参数计数决定or条件的动态select语句

Sql 参数计数决定or条件的动态select语句,sql,vb.net,dynamic-programming,Sql,Vb.net,Dynamic Programming,我有一个带有multiselect的列表框,它提供了多个值 select Amount from tblEmployeeTransactions _ where PayrollCode_Code = '" & code & "' " 我的listboxdata如下所示 For Each drv As CListItem In lstnoncash.SelectedItems code =drv.ItemData Next 我想要的查

我有一个带有multiselect的列表框,它提供了多个值

select Amount from tblEmployeeTransactions _
  where PayrollCode_Code = '" & code & "' "
我的listboxdata如下所示

For Each drv As CListItem In lstnoncash.SelectedItems
            code =drv.ItemData
        Next
我想要的查询应该是

select sum(Amount) from tblEmployeeTransactions _
  where PayrollCode_Code = '1' or PayrollCode_Code ='2' or PayrollCode_Code ='3'"

如果它有3行数据

您可能需要这样的内容:

Dim a As String() = {"1", "2", "3"}
Dim query = "select sum(Amount) from tblEmployeeTransactions " _
            & "where PayrollCode_Code IN "

'here inStatement will contain : ('1', '2', '3')'
Dim inStatement = "('" & String.Join("', '", a) & "')"

Console.WriteLine(query & inStatement)

您是
PayrollCode\u code
数字的吗?如果是,那么您不需要为此添加单一报价。我更喜欢在语句中使用
,而不是使用multiple
运算符

Dim sCode As String
For Each drv As CListItem In lstnoncash.SelectedItems
    sCode &= drv.ItemData & ","
Next

IF sCode.Length > 0 THEN
    sCode = sCode.Substring(0,sCode.Length-1);

    Dim _SQL  As String = "Select SUM(Amount) FROM tblEmployeeTransactions " & 
      "WHERE PayrollCode_Code IN (" & sCode & ")"


    ''Execute ur _SQL
END IF

您希望将列表扩展到
语句中的
。旁注:查看参数化查询。在SQL语句中使用串联字符串值(如
“&code&”
)是非常糟糕的做法。这可能导致SQL注入和数据丢失。一个简单的谷歌搜索将为您提供关于这两个方面的大量信息。@这不是我的问题,这些值来自我的数据库中的列表框,因此这里不存在注入问题。@GordonLinoff你是什么意思?很抱歉没有了解您如何解决我的问题?如“扩展列表如何”中所述?您的回答太简短了?我不知道在哪里扩展列表列表