我在使用sqldatasource的全文搜索时遇到问题。
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ApplicationServices %>"
SelectCommand="SELECT 1, 2, 3 FROM table WHERE CONTAINS(2, @text)">
<SelectParameters>
<asp:ControlParameter ControlID="tbOCRSearch" Name="text"
Type="String" DefaultValue="" PropertyName="Text" />
</SelectParameters>
如果我只输入一个搜索词,那么效果很好。但是如果我输入两个术语就会引发错误。
但是,如果我将“termone termtwo”放在双引号中,则查询可以正常工作。
如何修改我的selectcommand以添加双引号?
答案 0 :(得分:0)
解决。
花了我几个小时的时间。在sqldatasource中,我们需要添加一个OnSelecting事件。
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ApplicationServices %>"
SelectCommand="SELECT 1, 2, 3 FROM table WHERE CONTAINS(2, @text)"
OnSelecting="SqlDataSource1_Selecting">
<SelectParameters>
<asp:ControlParameter ControlID="tbOCRSearch" Name="text"
Type="String" DefaultValue="" PropertyName="Text" />
</SelectParameters>
然后在你背后的代码中你将需要其中一个。然后,您可以在文本周围添加引号。
protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
e.Command.Parameters["@text"].Value = "\"" + tbOCRSearch.Text + "\"";
}
现在一切都像它应该的那样。