-4

パラメータ化されたクエリを使用してデータを表示しようとしています

try
{
 SqlConnection xconn = new SqlConnection();
 xconn.ConnectionString = @" Data Source=servername; Database=master; Trusted_Connection=yes ";
 xconn.Open();
 SqlCommand ycmd = new SqlCommand ("select * from tablename where column1 = @name", xconn);
 ycmd.Parameters.Add("@name", dropdownlist.SelectedValue);
 SqlDataAdapter da = new SqlDataAdapter(s,xconn);
 SqlCommandBuilder cmdbuilder  = new SqlCommandBuilder(da);

 DataTable dt = new DataTable();
 da.Fill(dt);
 gridview.DataSource = dt;
 gridview.DataBind();
}
catch(Exception ex)
{
  label.Text = ex.Message + "\n" + ex.StackTrace;
 }

どうすれば動作させることができますか?

4

1 に答える 1

4

これを試して:

try 
{ 
 SqlConnection xconn = new SqlConnection(); 
 xconn.ConnectionString = @" Data Source=servername; Database=master; Trusted_Connection=yes";
 SqlCommand ycmd = new SqlCommand ("select * from tablename where column1 = @name", xconn); 
 ycmd.Parameters.Add("@name", dropdownlist.SelectedValue); 
 SqlDataAdapter da = new SqlDataAdapter(ycmd);

 DataTable dt = new DataTable(); 
 da.Fill(dt); 
 gridview.DataSource = dt; 
 gridview.DataBind(); 
} 
catch(Exception ex) 
{ 
  label.Text = ex.Message + "\n" + ex.StackTrace; 
}

SqlConnection.Open()メソッドを使用しているときに呼び出す必要はありませんSqlDataAdapter.Fill()。その方法では、接続を開き、完了時に破棄/閉じます。(これは問題ではなく、参考までに)

あなたがあなたを作成した方法SqlDataAdapterが問題です。SqlCommandコンストラクターとしてではなく、コマンドテキストだけで作成しました。SqlCommandそのため、クラスで指定されたパラメーターを渡さなかった。

それがうまくいくかどうか教えてください。それでも問題が解決しない場合は、SSMSでこのクエリを手動で実行して、実際に結果セットが返されることを確認してください。また、ListControl.SelectedValueプロパティに何かが含まれていることを確認してください。そこに保存されているものをデバッグして分析することでこれを行います。

于 2011-11-03T14:46:11.400 に答える