我正在使用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>
提前致谢。
答案 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;