搜索多个关键字 - SQL语句 - 访问数据库

时间:2014-02-22 08:22:55

标签: asp.net sql ms-access visual-studio-2008

我正在使用Visual Studio 2008测试asp.net网站。该网站使用ACCESS数据库。如果用户仅在搜索字段中输入一个关键字,则以下搜索查询可以正常工作。对于多个关键字,select语句返回null结果。有没有办法重新调用SQL语句,以便可以搜索多个关键字?

SelectCommand="SELECT [title] FROM [recipe] WHERE ([title] LIKE '%' + ? + '%')">
<SelectParameters>
<asp:ControlParameter ControlID="searchField" Name="title" 
PropertyName="Text" Type="String" />
</SelectParameters>

提前致谢。

2 个答案:

答案 0 :(得分:1)

由于MS ACCESS不支持全文搜索,我认为我解决了这个问题,因此可以使用单个文本框表单字段中的多个关键字搜索表格。这是脚本。到目前为止它运作良好。有没有办法让这个脚本更好????

由于

<%@ Import Namespace="System.Data.OleDb" %>

<script runat="server">    
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If IsPostBack Then

        Dim dbconn, sql, dbcomm, dbread, searchTxt, arrText, intCount
        searchTxt = Request.Form("TextBox1")
        arrText = Split(searchTxt)
        'Response.Write(search)

        dbconn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; data source=" & Server.MapPath("App_Data/MyRecipes.mdb"))
        dbconn.Open()
        For intCount = 0 To UBound(arrText)
            sql = "SELECT * FROM recipe WHERE title LIKE '%" + arrText(intCount) + "%' "
        Next
        dbcomm = New OleDbCommand(sql, dbconn)
        dbread = dbcomm.ExecuteReader()
        customers.DataSource = dbread
        customers.DataBind()
        dbread.Close()
        dbconn.Close()
    End If

End Sub
</script>

<body>
<form id="Form1" runat="server">
<asp:Repeater id="customers" runat="server">

<HeaderTemplate></HeaderTemplate>

<ItemTemplate>
<div style="display:block;">
<%#Container.DataItem("title")%>
</div>
</ItemTemplate>

<FooterTemplate></FooterTemplate>

</asp:Repeater>
<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="True"></asp:TextBox>
</form>

</body>

答案 1 :(得分:0)

Gloria,您可以在where之后更改,例如以下示例

  [title] Like 1st criteria OR [title] Like 2nd criteria OR  [title] Like 3rd criteria;