2016-06-29 8 views
1

テーブルに単語が存在するかどうかを確認しようとしていますtblwordかどうかを確認します。ここでは、ckeditorを使用してテーブルの単語の有無を確認しています。リンクボタンの場合、lblviewentryをクリックし、入力語が表に存在する場合はクリックします。 単語が表のラベルにない場合は、ラベルlabel2のテキストは「見つかりません」である必要があります。今問題は、たとえテーブルlabel2に存在する単語が「見つからない」という単語を入力しても、私が行ったことです。検索でSqlクエリが機能しない

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> 

コードのLinkBut​​tonの後ろに使用:

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 [email protected]"; 
    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; 

} 
+1

クエリを使用してsqlserverからデータをクエリできますか? – Sachu

答えて

-1

してみましょう私明確なSQLクエリで使用すると、

select *from tblword where [email protected] 

ここ@Word CKEditorバージョンのテキストで単語を比較している一点があるCKEditorバージョンのテキスト全体すなわち、それはかもしれ単一の単語または複数を希望します右の線。そのような状況では、SQLは期待どおりに動作しません。代わりに、指定されたCKEditor Text iの列の値を検索することをお勧めします。e

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

ここで、@Wordは複数の行にすることができます。適切な長さに設定する必要があります。

+0

あなたは大歓迎です@ sudipchand7139 –

+0

しかし、彼が単語 "one"を探していて、彼が "everyone"を持っているなら、彼は "Found"を得ます。 –

+0

はい、あなたは正しい@ OffirPe'erですが、「1」は悪い言葉ではありませんか? OPは悪い言葉を正しく検索したいですか? –

0

あなたはhtmlコード チェックしてデータを取得し、フィルタレコード、用CKEditerを使用している実際のここをクリックLink ウルは

を得るckediterと同じレコードをフィルタリングしている単語トリムあなたの選択コマンドで状態のよう

Select *from tblword where Word like '%'+ @Word + '%' 
0
  1. を置く:

    cmd.Parameters.AddWithValue( "@ことば"、Wordを。トリム()); 'のような'

  2. 使用クエリで:

    文字列のSQL = "ここでのWord%の@Word%のようなtblword SELECT * FROM";

0

あなたは接続を開いていません。そのコードは失敗するはずです。
決して気をつけないと接続が開かれません。

答えは、あなたが本当にスピードについては

SSMSでコマンドでテーブルに
実行を、その単語を持っており、一度だけ

のHashSetにすべての単語を読んで、あなたがオフに優れている容易ではないんです
+1

'SqlDataAdapter'の' Fill'メソッドは暗黙的に接続権を開きます?? –

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 [email protected]"; 
    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; 
} 
+1

私はこれを選択した方が良いと答えます。 –

0

このようにすることができます sql = "tblwordから選択*%@ Word%のような単語";

関連する問題