2016-11-17 349 views
1

「スカラー変数「@ID」を宣言しなければならないというエラーメッセージが表示される問題が発生しています。 。で、パラメータが、私は、変数を追加するとき、それが正常に動作しますスカラー変数を宣言する必要があります。SelectステートメントでエラーC#ASP.NET SQLコマンド

ダウン以下は私に問題を与えるコードです:

cmd.CommandText = "Select * From Attendee WHERE [email protected]"; 
cmd.Connection = conn; 
cmd.Parameters.AddWithValue("@ID",ID); 
conn.Open(); 
cmd.ExecuteNonQuery(); 
SqlDataAdapter da = new SqlDataAdapter(cmd.CommandText,cmd.Connection); 
da.Fill(dt); 
conn.Close(); 

私はちょうどのような変数に追加する場合:

cmd.CommandText = "Select * From Attendee Where ID=" + ID; 

それは完全に正常に動作します。

答えて

4

SqlDataAdapterコンストラクターでは、SqlCommand.CommandTextを渡します。
このテキスト(単なる文字列)は、次の2つのオプション

SqlDataAdapter da = new SqlDataAdapter(cmd.CommandText,cmd.Connection); 
da.SelectCommand.Parameters.AddWithValue("@ID",ID); 
da.Fill(dt); 

またはちょうど使用して、アダプタを構築していSqlCommand.Parametersコレクション

に代わりに定義されたパラメータ@IDを定義するには十分ではありませんコマンド

追加アドバイスとして
SqlDataAdapter da = new SqlDataAdapter(cmd); 

、私は本当にあなたがAddWithValueを使用していますが、代わりにパラメータにも、型を取るの追加のオーバーロードを使用しないことをお勧め

cmd.Parameters.Add("@ID",SqlDbType.Int).Value = ID; 

Can we stop using AddWithValue already?

+0

感謝を参照してください。この作品。ただし、追加は推奨されていませんか?そのため、AddWithValueが置き換えられます。 – Kluong

+0

助けになるのはうれしいです。 – Steve

+0

'古い' Addは、Valueを表すオブジェクトを2番目のパラメータとして渡すものです(これは上記とあいまいされているため非推奨です) – Steve

関連する問題