我正在尝试检查表格 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;
}
答案 0 :(得分:0)
实际上你正在使用CKEditer进行过滤记录,它使用html代码获取数据 点击这里Link 所以请确保您过滤与ckediter get相同的记录
在你的选择命令
中添加类似条件Select *from tblword where Word like '%'+ @Word + '%'
答案 1 :(得分:0)
修剪这个词:
cmd.Parameters.AddWithValue(“@ Word”,Word.Trim());
在查询中使用'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)
答案 5 :(得分:-1)
让我清楚一点,在您的SQL查询中,您正在将单词与CKEditor的文本进行比较
select *from tblword where Word=@Word
这里@Word
是CKEditor的全文,即它可以是单个字或右边多行。在那种情况下,你的SQL将无法按预期工作。相反,我建议您在给定的CKEditor文本中搜索列值,即
select *from tblword where @Word like '%'+Word+'%'
这里@Word可以是多行你应该为它设置适当的长度。