сетка данных не отображается

#c# #sql #ado.net

#c# #sql #ado.net

Вопрос:

Я пытаюсь отобразить данные из sql в сетку данных следующим образом:

  try
    {
        SqlConnection xconn = new SqlConnection();
        xconn.ConnectionString = @"Data Source=servername; Trusted_Connection=yes; Database=master";
        xconn.Open();
        string s = "select * from tablename where name=@name";
        SqlCommand ycmd = new SqlCommand(s, xconn);

        ycmd.Parameters.Add("@name", dropdownlistname.SelectedValue);
        SqlDataAdapter da = new SqlDataAdapter(ycmd);

        DataTable dt = new DataTable();
        da.Fill(dt);
        gridview.DataSource = dt;
        gridview.DataBind();
    }
    catch (Exception e2)
    {
        lblresult.Text = e2.Message   "<br />"   e2.StackTrace  ; 
    }
  

Я не получаю никаких исключений. Однако сетка не отображается.

Комментарии:

1. da Есть ли в ней какие-либо значения после выполнения Fill() ?

Ответ №1:

попробуйте вот так….

вы можете изменить это в зависимости от ваших требований….

 SqlCommand command = new SqlCommand();
command.CommandText = "SELECT * FROM Product WHERE Product.ID=@PROD_ID";
command.Parameters.Add(new SqlParameter("@PROD_ID", 100));

// Execute the SQL Server command...
SqlDataReader reader = command.ExecuteReader();
DataTable tblProducts = new DataTable();
tblProducts.Load(reader);

foreach (DataRow rowProduct in tblProducts.Rows)
{
    // Use the data...
}
  

Ответ №2:

Это не работает, потому что вы определяете параметр @name в своей инструкции sql, но вы никогда не вводите никакого значения, поскольку версия SqlCommand.Parameters.Add , которая принимает 2 параметра, является той, которая получает ParameterName и SqlDbType

Я удивлен, что вы не получаете исключений. Возможно, ваше значение dropdownlistname.SelectedValue соответствует одному из значений перечисления для SqlDbType и вот почему?

Вы должны делать:

 ycmd.Parameters.AddWithValue("@name", dropdownlistname.SelectedValue);