VB.Net 中的 SQL 查询

Posted

技术标签:

【中文标题】VB.Net 中的 SQL 查询【英文标题】:SQL Query in VB.Net 【发布时间】:2012-12-18 10:17:43 【问题描述】:

我有一个从数据库中选择 value=combobox.selectedtext 的查询。

但是,我想做的是让 where 值检查组合框的所有值。

有人可以就如何做到这一点提供建议吗?

我现在的sql查询是这样的:

Dim sqlOpServ As String = ("SELECT DISTINCT col1, col2 from table1, table2 where test=test1 AND value= '" & combobox1.SelectedItem & "' ORDER BY col1 ASC")

谢谢

【问题讨论】:

【参考方案1】:

我不知道VS,所以我会尝试帮助你而不用尝试我的代码:

 Dim sWhere as string=""
 For i = 0 To ComboBox1.Items.Count - 1
        sSelect = sSelect & " AND value='" & ComboBox1.Items(i) & "' "
 Next

 Dim sqlOpServ As String = ("SELECT DISTINCT col1, col2 from table1, table2 where test=test1 " & sWhere & " ORDER BY col1 ASC")

在 cmets 之后:

   Dim sWhere As String = ""

    For i = 0 To ComboBox1.Items.Count - 1
        If i = 0 Then
            sWhere = " AND value='" & ComboBox1.Items(i).ToString & "' "
        Else
            sWhere = sWhere & " OR value='" & ComboBox1.Items(i).ToString & "' "
        End If

    Next

    Dim sqlOpServ As String = _
        ("SELECT DISTINCT col1, col2 from table1, table2 where test=test1 " & sWhere & " ORDER BY col1 ASC")

如果您使用数据表来填充组合框

    Dim table As DataTable = DirectCast(Me.ComboBox1.DataSource, DataTable)
    Dim sWhere As String = ""

    For i = 0 To ComboBox1.Items.Count - 1
        Dim displayItem As String = table.Rows(i)(ComboBox1.DisplayMember).ToString()
        ' Dim valueItem As String = table.Rows(i)(ComboBox1.ValueMember).ToString() 'if you need at some point the value you can use this

        If i = 0 Then
            sWhere = " AND value='" & displayItem & "' "
        Else
            sWhere = sWhere & " OR value='" & displayItem & "' "
        End If

    Next

    Dim sqlOpServ As String = _
        ("SELECT DISTINCT col1, col2 from table1, table2 where test=test1 " & sWhere & " ORDER BY col1 ASC")

希望能帮到你

【讨论】:

这不会像你所说的那样返回任何东西AND ColumnName = 'VALUE1' AND ColumnName = 'VALUE2' 等等。它不能同时有 2 个值。您需要将其括起来并放入ColumnName = 'VALUE1' OR etc...【参考方案2】:

2 种方法

1)您可以制作所有组合框项的值并用特殊字符分隔,您可以将存储过程中的所有值拆分并得到结果

2) 您可以创建一个以“或”分隔的字符串,即 value=22 或 value=25,然后您可以执行这些值。

【讨论】:

以上是关于VB.Net 中的 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

在 VB.NET 中结合了这两个 sql 查询

如何从 VB.NET 的视图中获取 SQL 查询

从 VB.NET 复选框选项构建 SQL 查询时遇到问题

Datatable 正在从我为 Windows 10 构建的 VB.NET 应用程序中的 SQL 查询结果中接收 (01\dd\yyyy) 格式的日期

vb.net 中如何使用SQL语句查询数据库中的数据

vb.net SQL更新查询无法完成