首页 / 网页编程 / ASP.NET / Enterprise Library 2.0 Hands On Lab 翻译(2):数据访问程序块(二)
Enterprise Library 2.0 Hands On Lab 翻译(2):数据访问程序块(二)2010-03-02 cnblogs TerryLee练习2:存储过程和使用程序块更新数据该练习将示范如何用数据访问应用程序调用存储过程,并使用强类型的DataSet来更新数据。第一步打开DataEx2.sln项目,默认的安装路径应该为C:Program FilesMicrosoft Enterprise Library January 2006labscsData Accessexercisesex02egin,并编译。第二步 在QuickStarts数据库中添加Categories数据表运行批处理文件SetUpEx02.bat,它默认的路径安装路径为C:Program FilesMicrosoft Enterprise Library January 2006labscsData Accessexercisesex02DbSetup,默认的服务器实例为(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。