2017-10-08 3 views
0

私の質問が結果を私のsealresultラベルに返さない場所に別の質問が掲載されています。だから私はまだこれを理解することができないので、別の方法でそれを尋ねるように思った。私は次のコードを持っています、それは完全に "検索"ボタンをクリックして実行され、クエリの結果を返します。しかし、私はレシートボックスのIDを持つtextBoxを持っているので、ユーザーがテキストを入力できるようにし、結果をsealresultラベルに集めるためにクエリに配置します。これをどのように達成するのですか?私は、レシートボックスと書かれたテキストボックスからRE00007544と書かれたユーザ入力をしたい。私のクエリに渡されたユーザ入力を取得し、結果をラベルに表示する方法

protected void receiptbox_TextChanged(object sender, EventArgs e) 
{ 

} 
protected void sealresultquery_Selecting(object sender, SqlDataSourceSelectingEventArgs e) 
{ 

} 
protected void searchbutton_Click(object sender, EventArgs e) 
{ 
    sealresult.Text = ""; 
    string connString = @"Data Source=SQL;Initial Catalog=mydatabase;User ID=admin;Password=******"; 
    string query = "Select seal1 from dbo.RECEIPTHEADER where receipt = 'RE00007544'"; 
    SqlConnection conn = new SqlConnection(connString); 
    SqlCommand comm = new SqlCommand(query, conn); 

    using (conn) 
    { 
     try 
     { 
      conn.Open(); 
      SqlDataReader reader = comm.ExecuteReader(); 

      while(reader.Read()) 
      { 
       sealresult.Text += reader[0].ToString(); 

      } 
      reader.Close(); 
     } 
     catch(Exception ex) 
     { 
      querystatus.Text = ex.Message; 
     } 
    } 

} 

答えて

0

私は理解していれば、私はあなたが提供するコードへの最も簡単な変更は可能だと思う:

string query = "Select seal1 from dbo.RECEIPTHEADER where receipt = '" + receiptbox.Text + "'"; 

しかし、それは最も安全な方法はありません。ユーザーの入力を信頼するべきではありません。

+0

これは働いていました!私はSQLインジェクションについてあまり心配していません。これは、ローカルサーバー上にあり、1人のユーザーだけが使用するためです。公開されるものはありません。ありがとう!! –

0

がSQLインジェクションからあなたを救うのパラメータを使用することを学びます。

コードを次のように変更します。

 string query = "Select seal1 from dbo.RECEIPTHEADER where receipt = @number"; 

     //define parameters used in command object 
     SqlParameter param = new SqlParameter(); 
     param.ParameterName = "@number"; 
     param.Value   = receiptbox.Text.Trim(); 

     //add new parameter to command object 
     comm.Parameters.Add(param); 
+0

'code'sealresult.Text =" "; 文字列connString = @ "データソース= SQL;初期カタログ= SCESCE;ユーザーID = sa;パスワード= 2b @ SCEx! string query = "dbo.RECEIPTHEADERからseal1を選択します(領収書= @番号)"; SqlConnection conn =新しいSqlConnection(connString); SqlCommand comm =新しいSqlCommand(クエリ、conn); SqlParameter param = new SqlParameter(); param.ParameterName = "@number"; param.Value = receiptbox.Text.Trim(); comm.Parameters.Add(param); 'code' –

+0

私は前にこのようなものを使用していましたが、それを動作させることはできませんでしたが、パラメータを明示的に使用したいので、これ以上演奏します。私はghostbinに自分のコードを掲示し、うまくいけば、後でその上でいくつかの光を当てることができます..ありがとう! –

関連する問題