2016-08-28 10 views
0

私はGoogleで検索した問題に直面しているが、私の答えは見つからない。私はWindowsフォームでC#で検索したいのですが、数値だけで作業していて、プロジェクトはペルシャ語であるので、nvarchar値で検索する必要があるので、動作しません。私を助けてください。C#で検索するが、テキスト検索では機能しない

は、ここに私のコードです:それはメッセージがこの(付近に正しくない構文「=」)

SqlDataAdapter da = new SqlDataAdapter(@"SELECT Dmokalafiat, Dihteyat FROM Armyservices where Ename = "+ txtsearch.Text,db.con); 

DataTable dt = new DataTable(); 
da.Fill(dt); 
if (dt.Rows.Count > 0) 
{ 
    Textbox1.Text = dt.Rows[0]["Dmokalafiat"].ToString(); 
    Textbox2.Text = dt.Rows[0]["Dihteyat"].ToString(); 
} 

答えて

0

私はそれが原因でSQLインジェクション攻撃のだと思います。このサンプルコードのようにすることができます:

using(var con = new SqlConnection(...)) 
    { 
    var cmd = new SqlCommand("select Dmokalafiat, Dihteyat from Armyservices where Ename = @Ename ", con); 
    con.Open(); 
    cmd.Parameters.AddWithValue("@Ename ", txtsearch.Text); 
    var da = new SqlDataAdapter(cmd); 
    var dt = new DataTable(); 
    da.Fill(dt); 
     if (dt.Rows.Count > 0) 
     { 
     Textbox1.Text = dt.Rows[0]["Dmokalafiat"].ToString(); 
     Textbox2.Text = dt.Rows[0]["Dihteyat"].ToString(); 
     } 
    } 
+0

回答ありがとうございますが、それはまた動作しません –

+0

同じエラーがありますか? @SayedIsaqSadat –

+0

これは、クエリを実行しないようなものですが、何のメッセージも与えません。また、それも動作しませんでした –

0

あなたの例にいくつかの問題があります。

SqlDataAdapter da = new SqlDataAdapter(@"SELECT Dmokalafiat, Dihteyat FROM Armyservices where Ename = "+ txtsearch.Text,db.con); 

は少なくとも

SqlDataAdapter da = new SqlDataAdapter(@"SELECT Dmokalafiat, Dihteyat FROM Armyservices where Ename = '"+ txtsearch.Text + "'",db.con); 

であるべきしかし、これは本当に良い方法ではありません、あなたが名前付きパラメータの代わりに、連結された値を使用する必要があります - しかしthatsの別の質問を。

+0

行の最初と最後に引用符は不要です。 – Berkay

+0

ありがとう@Berkay - 私は今変更しました。 – PhillipH

関連する問題