[英]Displaying SQL Server table data in webform
我有一個應用程序,該應用程序應允許用戶從數據庫中的表中查看寵物。
這是我的按鈕代碼:
protected void viewAnimalsBreedButton_Click(object sender, EventArgs e)
{
try
{
SqlConnection cnn = new SqlConnection("Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\FrendsWithPaws.mdf;Integrated Security=True");
cnn.Open();
SqlCommand command = new SqlCommand("SELECT PetID, Breed, Name, Age, Gender, Picture, Sanctuary FROM Pets WHERE Breed='+ breedDropDownList.SelectedValue +'", cnn);
SqlDataReader reader = command.ExecuteReader();
petsGridView.DataSource = reader;
petsGridView.DataBind();
cnn.Close();
}
catch (Exception ex)
{
Response.Write("error" + ex.ToString());
}
}
首先,我有一個寵物品種的dropdownlist
,當我在dropdown
選擇一個breed
並單擊查看動物時,我希望gridview
向我顯示該品種的寵物(包含大部分包含的信息)...我然后想要這個為Species
和Sanctuary
...
當前,當我選擇一個品種並單擊查看動物時,什么都不會發生,如下圖所示:
我該如何工作?
首先,您應該始終使用參數化查詢來避免SQL注入和擺脫此類問題。 其次,您需要創建一個DataTable
並通過數據讀取器填充它,並將表綁定到網格:
cnn.Open();
SqlCommand command = new SqlCommand("SELECT PetID, Breed, Name, Age, Gender, Picture, " +
"Sanctuary FROM Pets where Breed = @Breed ", cnn);
command.Parameters.AddWithValue("@Breed", breedDropDownList.SelectedValue);
DataTable table = new DataTable();
table.Load(command.ExecuteReader());
petsGridView.DataSource = table;
petsGridView.DataBind();
cnn.Close();
盡管直接指定類型並使用Value屬性比AddWithValue
更好。 https://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/
你必須加載讀取數據到datatable
第一:
protected void viewAnimalsBreedButton_Click(object sender, EventArgs e)
{
try
{
SqlConnection cnn = new SqlConnection("Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\FrendsWithPaws.mdf;Integrated Security=True");
cnn.Open();
SqlCommand command = new SqlCommand("SELECT PetID, Breed, Name, Age, Gender, Picture, Sanctuary FROM Pets WHERE Breed='" + breedDropDownList.SelectedValue + "'", cnn);
SqlDataReader reader = command.ExecuteReader();
var dataTable = new DataTable();
dataTable.Load(dataReader);
petsGridView.DataSource = dataTable;
petsGridView.DataBind();
cnn.Close();
}
catch (Exception ex)
{
Response.Write("error" + ex.ToString());
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.