簡體   English   中英

在Webform中顯示SQL Server表數據

[英]Displaying SQL Server table data in webform

我有一個應用程序,該應用程序應允許用戶從數據庫中的表中查看寵物。

Web表單設計和Pets數據表的圖片: Web表單設計和Pets數據表的圖片

這是我的按鈕代碼:

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向我顯示該品種的寵物(包含大部分包含的信息)...我然后想要這個為SpeciesSanctuary ...

當前,當我選擇一個品種並單擊查看動物時,什么都不會發生,如下圖所示:

選擇“房屋”品種並單擊“查看動物”按鈕后的網絡表單圖片: 選擇“房屋”品種並單擊“查看動物”按鈕后的網絡表單圖片

我該如何工作?

首先,您應該始終使用參數化查詢來避免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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM