搜索的SQL查询不起作用

时间:2016-06-29 07:14:06

标签: c# sql asp.net

我正在尝试检查表格 tblword 中是否存在单词。这是我通过ckeditor提供输入来检查表格中是否存在单词。并在链接按钮,即 lblviewentry 上单击,如果输入的单词存在于表中。 标签即label2文本应为"找到"如果表格标签中没有单词,则文本应为"未找到"。现在的问题是,即使我输入表label2中存在的单词,文字是"未找到" .Below就是我所做的。

使用Html

<div>
 <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
 <asp:TextBox ID="txtentrytitle" CssClass="textbox2" placeholder="Entry 
 Title..." Width="100%" runat="server" Height="104px"></asp:TextBox>
 <CKEditor:CKEditorControl ID="CKEditorControl2" BasePath="~/ckkeditor" runat="server" AutoPostBack="True"></CKEditor:CKEditorControl>
</div>
<div>
 <asp:LinkButton ID="lblviewentry" CssClass="btn btn-primary shadow1" runat="server" OnClick="lblviewentry_Click"> <span aria-hidden="true" class="glyphicon glyphicon-option-vertical"></span></asp:LinkButton>
</div>

linkbutton背后的代码:

DataTable dt = OJC.GetBadWord(CKEditorControl2.Text);
    if (dt.Rows.Count>0)
    {
        Label2.Text="Found"

    }
    else
    {
        Label2.Text="Not Found"

    }

使用的方法

   public DataTable GetBadWord(string Word)
{
    SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["myconnection"].ConnectionString);
    string sql = "select *from tblword where Word=@Word";
    SqlCommand cmd = new SqlCommand(sql, con);
    cmd.Parameters.AddWithValue("@Word", Word);       
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable dt = new DataTable();
    da.Fill(dt);
    return dt;

}

6 个答案:

答案 0 :(得分:0)

实际上你正在使用CKEditer进行过滤记录,它使用html代码获取数据 点击这里Link 所以请确保您过滤与ckediter get相同的记录

在你的选择命令

中添加类似条件
Select *from tblword where Word like '%'+ @Word + '%'

答案 1 :(得分:0)

  1. 修剪这个词:

    cmd.Parameters.AddWithValue(“@ Word”,Word.Trim());

  2. 在查询中使用'like':

    string sql =“select * from tblword where word like%@ Word%”;

答案 2 :(得分:0)

呃,你没有打开连接。该代码应该失败。
没关系 - 填充将打开连接。

答案是你在表格中没有这个词 在SSMS中运行命令

为了速度和轻松,你最好只需将所有单词读入HashSet一次

答案 3 :(得分:0)

我认为你需要拆分文字来搜索每个单词,不是吗? 或者连接它们并将查询从WHERE更改为WHERE IN(W1, ...)

似乎您不需要结果,只是知道值是否在表中。所以我想

public bool IsBadWord(string Word)
{
    SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["myconnection"].ConnectionString);
    string sql = "select top 1 * from tblword where Word=@Word";
    SqlCommand cmd = new SqlCommand(sql, con);
    cmd.Parameters.Add("@Word");

    foreach (var element in Word.Split())
    {
        cmd.Parameters[0].Value = element;
        if(cmd.ExecuteScalar()!=null)
            return true;
    }

    return false;
}

答案 4 :(得分:0)

你可以这样做  sql =&#34;从tblword中选择*,其中Word喜欢%@ Word%&#34 ;;

答案 5 :(得分:-1)

让我清楚一点,在您的SQL查询中,您正在将单词与CKEditor的文本进行比较

select *from tblword where Word=@Word

这里@Word是CKEditor的全文,即它可以是单个字或右边多行。在那种情况下,你的SQL将无法按预期工作。相反,我建议您在给定的CKEditor文本中搜索列值,即

select *from tblword where @Word like '%'+Word+'%'

这里@Word可以是多行你应该为它设置适当的长度。