невозможно отобразить данные с помощью параметризованного запроса с помощью c # - PullRequest
0 голосов
/ 03 ноября 2011

Я пытаюсь отобразить данные с помощью параметризованного запроса

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;
 }

Как мне заставить его работать?

1 Ответ

4 голосов
/ 03 ноября 2011

Попробуйте это:

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 содержит что-то. Сделайте это путем отладки и анализа того, что там хранится.

...