程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> Enterprise Library 2.0 Hands On Lab 翻譯(2):數據訪問程序塊(二)

Enterprise Library 2.0 Hands On Lab 翻譯(2):數據訪問程序塊(二)

編輯:關於ASP.NET

練習2:存儲過程和使用程序塊更新數據

該練習將示范如何用數據訪問應用程序調用存儲過程,並使用強類型的DataSet來更新數據。

第一步

打開DataEx2.sln項目,默認的安裝路徑應該為C:\Program Files\Microsoft Enterprise Library January 2006\labs\cs\Data Access\exercises\ex02\begin,並編譯。

第二步 在QuickStarts數據庫中添加Categories數據表

運行批處理文件SetUpEx02.bat,它默認的路徑安裝路徑為C:\Program Files\Microsoft Enterprise Library January 2006\labs\cs\Data Access\exercises\ex02\DbSetup,默認的服務器實例為(local)\SQLEXPRESS,如果需要修改,用記事本打開SetUpEx02.bat,修改為自己的德數據庫服務器實例。執行後將會在數據庫中創建Categories數據表和存儲過程GetCategories,並會在表中插入一些數據。

第三步 回顧應用程序

在解決方案管理器中,選中MainForm.cs文件,選擇 View | Designer 菜單,應用程序主要是選擇一個特定的Category,它將會加載該類別下的所有產品,允許我們作一些修改並保存。

第四步 實現數據的讀取

1.在解決方案管理器中選擇MainForm.cs,選擇View | Code 菜單命令,在代碼中添加如下命名空間,在這之前請先添加對Data和Common兩個程序集的引用,可以參考練習一。

using Microsoft.Practices.EnterpriseLibrary.Data;

2.在窗體中加入如下私有域,後面將會在多個地方用到該數據庫實例。

private Database _db = DatabaseFactory.CreateDatabase("QuickStarts Instance");

3.在MainForm_Load方法中加入如下代碼

private void MainForm_Load(object sender, System.EventArgs e)
{
this.cmbCategory.Items.Clear();
// TODO: Use a DataReader to retrieve Categories

using (IDataReader dataReader = _db.ExecuteReader("GetCategories"))
  {
     // Processing code
    while (dataReader.Read())
    {
       Category item = new Category(
        dataReader.GetInt32(0),
        dataReader.GetString(1),
        dataReader.GetString(2));
      this.cmbCategory.Items.Add(item);
    }
  }
  if (this.cmbCategory.Items.Count > 0)
    this.cmbCategory.SelectedIndex = 0;
}

重載的方法Database.ExecuteReader,有一個字符串類型的參數,通過它來指定存儲過程的名稱,在這裡我們不用做任何數據庫連接方面的管理,但是在DataReader使用完畢後釋放很重要,這些都會由上面的代碼來完成,當DataReader釋放後,數據庫連接也將被關閉。

4.在cmbCategory_SelectedIndexChanged方法中加入如下代碼,它將根據我們選擇的類別來讀取對應的Product的集合。

private void cmbCategory_SelectedIndexChanged(object sender, System.EventArgs e)
{
   this.dsProducts.Clear();
  Category selectedCategory = (Category)this.cmbCategory.SelectedItem;
  if (selectedCategory == null)
    return;

  // TODO: Retrieve Products by Category

_db.LoadDataSet(
    "GetProductsByCategory",
    this.dsProducts,
    new string[] { "Products" },
    selectedCategory.CategoryId);
}

在數據訪問應用程序塊中Database類提供了兩個關於DataSet的方法ExecuteDataSet和LoadDataSet。ExecuteDataSet返回一個新的DataSet而LoadDataSet則返回一個已經存在的DataSet。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved