#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);