LINQ 與資料存取:ASP.NET篇(1)- 從 Web Forms 與 ADO.NET 開始

從最簡單的 ASP.NET Web Forms 開始,來看看 ADO.NET如何從資料庫萃取資料,呈現在網頁上,對於一般的ASP.NET開發人員應該相當熟悉了,不過為了完整性與後續說明方便,因此這裏先作個開頭。

此系列同樣延用 LINQ 與資料存取 (1) -從 ADO.NET 開始這一篇當中所介紹的資料庫KTMS,由於討論的內容涉及稍微複雜的資料查詢,因此除了分類資料表Categories之外,另外還要使用 Produsts資料表,這個資料表儲存了示範用的商品資料,內容如下,本系列只作概念性說明,目前資料表中僅有幾個關鍵性的資料欄位儲存了實體資料。


瞭解並準備好測試需要的資料庫,現在開啟 Visual Studio 2012 建立一個 ASP.NET Web Form 應用程式專案,新增一個用來呈現商品資料的網頁products.aspx ,並且於其中配置一個 GridView 控制項,此控制項的上方則配置一個文字方塊與按鈕,提供資料篩選的功能,完成的畫面如下:


切換至程式碼檔案 products.cs ,首先建立一個用來取得產品資料的功能函式如下:

void GetProducts(int p)
{
SqlConnection conn = new SqlConnection(@"Server=Tim-PC;");
    string sql = "SELECT * FROM Products WHERE UnitPrice < " + p ;
    DataSet ds = new DataSet();
    using (conn)
    {
         SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
         adapter.Fill(ds, "Products");
    }
  gridView.DataSource = ds.Tables[0];
gridView.DataBind();
}

此函式取得KTMS資料庫裏面Products資料表中,商品價格小於參數 p 的資料進行回傳,最後將其設定給GridView控制項,顯示在畫面上。現在於網頁載入完成之後調用此函式,取得商品價格小於1000的資料內容。

protected void Page_Load(object sender, EventArgs e)
{
    GetProducts(1000);
}

另外撰寫畫面上篩選按鈕的 Click 事件處理函式如下:

protected void filter_Click(object sender, EventArgs e)
{
    int p =int.Parse( price.Text) ;
    GetProducts(p);
}

其中取得使用者輸入文字方塊的數字,取回商品價格小於此數值的資料。現在執行此網頁範例,首先得到以下的畫面:


這個畫面呈現原始資料中,價格小於 1000 元的商品。現在於畫面中文字方塊輸入 5000 ,取得價格小於 5000 的商品資料,結果畫面如下:


如你所見,我們成功的利用ADO.NET與SQL敘述取回欲查詢的資料,當然你可以利用控制項直接拖拉完成相關的功能,不過後續的內容將在這個範例的基礎上繼續討論,因此理解這一篇透過程式碼查詢資料作法是有必要的。

下一篇在這個基礎上,我們要進一步看導入 LINQ 的作法。

P.S. 此篇的SQL為了單純化說明採用直接合併敘述,沒有考慮SQL注入的問題。



LINQ 與資料存取系列



沒有留言: