首页 > 解决方案 > 如何在 vb.net asp.net 中执行搜索功能?

问题描述

我想使用 VB 在我的 ASP.NET 中实现搜索功能

这些是我的代码,但我在“LIKE”查询中有一些错误。我对 SQL 查询有点困惑。请帮忙,谢谢。

Dim searchOwnerSql As String =
        "SELECT Owners.name, Owners.age, Cars.platenumber FROM Owners INNER JOIN Cars LIKE @a"
    searchOwnerCmd = New SqlCommand(searchOwnerSql, conn)

Protected Sub SearchButton_Click(sender As Object, e As EventArgs) Handles SearchButton.Click

    Dim search As String = SearchTextBox.Text

    searchOwnerCmd.Parameters.Clear()
    searchOwnerCmd.Parameters.AddWithValue("a", "%" & search & "%")

    Dim adapter As SqlDataAdapter = New SqlDataAdapter(searchOwnerCmd)
    Dim ds As DataSet = New DataSet()
    adapter.Fill(ds, "search")
    Dim dt As DataTable = ds.Tables("search")
    totalCarsGridView.DataSource = dt
    totalCarsGridView.DataSourceID = Nothing
    totalCarsGridView.DataBind()
    If (dt.Rows.Count = 0) Then
        Response.Write("SUCCESS")
    Else
        Response.Write("FAILED")
    End If
End Sub

标签: sqlasp.netvb.net

解决方案


您的 SQL 语法错误,应该是这样的:

SELECT ... FROM LeftTable l
INNER JOIN RightTable r
ON l.[SomeKey] = r.[SomeKey]
WHERE l.[FilteredColumn] LIKE '%seachedValue%'

例如,您应该在https://www.w3schools.com/sql/中了解有关 SQL 的更多信息

如果您的数据库表是这样的:

   --------------
   | TABLE Cars |
   --------------
   CarId int,
   PlateNumber varchar(50),
   OwnerID int

   ----------------
   | TABLE Owners |
   ----------------
   OwnerID int,
   [Name] varchar(50),
   Age int

而你想搜索一个特定的 PlateNumber,SQL Query 应该是:

   SELECT Owners.name, Owners.age, Cars.PlateNumber FROM Owners 
   INNER JOIN Cars 
   ON Owners.OwnerID = Cars.OwnerID 
   WHERE Cars.PlateNumber LIKE @a 

推荐阅读