1

我已经设法让搜索功能正常工作,但它非常笨重:(

代码:

If dropdown_sV.Value = "N" Then
        If WhereParts > 0 Then
            WhereClause = WhereClause & " AND"
        End If
        WhereClause = WhereClause & " [sV] = 'N'"
        WhereParts = WhereParts + 1
    End If

    If dropdown_sV.Value = "G" Then
        If WhereParts > 0 Then
            WhereClause = WhereClause & " AND"
        End If
        WhereClause = WhereClause & " [sV] = 'G'"
        WhereParts = WhereParts + 1
    End If

我可以让这段代码更高效吗,因为我有很多带有以下选项的下拉菜单:N、G、O、A、R、U

维护我的应用程序将是一场噩梦。

4

2 回答 2

2

是的,您只能一次使用代码,即每次为下拉选择编写代码。您可以将代码减少为:

If WhereParts > 0 Then
  WhereClause = WhereClause & " AND"
  End If
  string value=dropdown_sV.Value;
  WhereClause = WhereClause & " [sV] = '"+dropdown_sV.Value+"'"
  WhereParts = WhereParts + 1
于 2013-06-06T11:19:07.150 回答
1

你可以使用:

If dropdown_sV.SelectedIndex > -1 Then
    If WhereClause.Length > 0 Then
        WhereClause = WhereClause & " AND"
    End If
    WhereClause = WhereClause & " [sV] = " & dropdown_sV.Value
End If

但你真的应该考虑参数化你的查询(像这样):

If dropdown_sV.SelectedIndex > -1 Then
    If WhereClause.Length > 0 Then
        WhereClause = WhereClause & " AND"
    End If
    WhereClause = WhereClause & " [sV] = @sV"
End If

构建子句后WHERE,您只需将参数与值相关联:

Dim cmd As SqlCommand = New SqlCommand(queryString, connectionString)
cmd.Parameters.Add("sV", SqlDbType.VarChar, 50).Value = dropdown_sV.Value
于 2013-06-06T11:22:52.323 回答