2

功能性

用户在 textboxA 中输入文本。在数据库记录中搜索与用户输入相对应的 First Names AND Last Names。

问题:

看来我得到的结果只是搜索“名字”字段,而不是名字和姓氏字段

例子:

*搜索“Mike”返回: *

迈克·史密斯

迈克·琼斯

搜索“琼斯”:

迈克琼斯没有归还

代码:

Protected Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles button1.Click

    If txtSearch.Text = "" Then

    Else

        Dim ConnString As String = System.Configuration.ConfigurationManager.ConnectionStrings("oakfratintdbConnectionString").ConnectionString
        Dim Conn As New SqlConnection(ConnString)
        Dim searchCMD As New SqlCommand("SELECT [FirstName], [LastName], [MidInitName], [NameSuffix], [NamePrefix], [DOB], [DOD], [BurialDate], [GeoDirection], [Space], [Lot], [Row], [IntermentSpec], [AddtlInfo] FROM [OFCInterments] WHERE ([FirstName] LIKE @FirstName)", Conn)
        Dim searchDT As DataTable = GetData(searchCMD)
        GridView1.DataSource = searchDT
        GridView1.DataBind()
    End If

End Sub

代码说明:

txtSearch 是用户的搜索输入

4

2 回答 2

3

改变

SELECT [FirstName], [LastName], [MidInitName], [NameSuffix], [NamePrefix], [DOB], 
[DOD], [BurialDate], [GeoDirection], [Space], [Lot], [Row], [IntermentSpec], 
[AddtlInfo] FROM [OFCInterments] WHERE ([FirstName] LIKE @FirstName)

SELECT [FirstName], [LastName], [MidInitName], [NameSuffix], [NamePrefix], [DOB], 
[DOD], [BurialDate], [GeoDirection], [Space], [Lot], [Row], [IntermentSpec], 
[AddtlInfo] FROM [OFCInterments] WHERE ([FirstName] LIKE @FirstName or 
LastName like @LastName)
于 2012-11-14T04:42:58.787 回答
1

下面是调整了 WHERE 子句的 SQL 查询,使您可以灵活地仅按名字、仅按姓氏或两者进行搜索。

SELECT [FirstName], [LastName], [MidInitName], [NameSuffix], [NamePrefix], [DOB], [DOD], [BurialDate], [GeoDirection], [Space], [Lot], [Row], [IntermentSpec], [AddtlInfo] FROM [OFCInterments] WHERE
    (@FirstName IS NULL OR [FirstName] LIKE @FirstName)
    AND (@LastName IS NULL OR [LastName] LIKE @LastName)

通过这个查询,我假设如果用户搜索 FirstName: "Mike" 和 LastName: "Jones",则搜索结果应该只包含 "Mike Jones",而不是 "Mike Smith"、"Mike Jones" 和“保罗琼斯”。

请注意,如果您使用此方法,则需要确保在用户未提供标准值的情况下不要使用空字符串填充参数。或者,除了 null 之外,您还可以检查查询中的空字符串。

于 2012-11-14T05:46:08.277 回答