在ASP.NET 2.0中操作数据之一:创建一个数据访问层(5)

using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using NorthwindTableAdapters; public partial class AllProducts : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { ProductsTableAdapter productsAdapter = new ProductsTableAdapter(); GridView1.DataSource = productsAdapter.GetProducts(); GridView1.DataBind(); } }

在ASP.NET 2.0中操作数据之一:创建一个数据访问层

图 13: 显示在GridView里的产品列单

这个例子要求我们在ASP.NET网页的Page_Load事件处理函数里,写三行编码。在以后的教程里,我们将讨 论使用ObjectDataSource,用声明的方式来从DAL中获取数据。用ObjectDataSource的话,我们一行编码都不 用写,而且还能得到分页和排序支持呢!

第三步:给数据访问层添加参数化的方法

至此,ProductsTableAdapter只有一个方法,GetProducts(),它返回数据库里的所有产品。能够操作所有的产品当然有用,但很多时候我们想要获取关于一个指定产品的信息,或者属于某个特 定分类的所有产品。要想给我们的数据访问层添加这样的功能,我们可以给TableAdapter添加参数化的方法。

让我们来添加一个GetProductsByCategoryID(categoryID)方法。为给DAL添加新的 方法,让我们回到DataSet设计器,在ProductsTableAdapter上按右鼠标,然后选择“添加查 询(Add Query)”。

在ASP.NET 2.0中操作数据之一:创建一个数据访问层

图 14: 在TableAdapter上按右鼠标,选择“添加查询”

向导首先会问我们是否要通过一个ad-hoc SQL语句还是生成一个新存储过程或者使用现有存储过程来访问 数据库。让我们还是选择使用SQL 语句。接着,向导会问我们使用什么类型的SQL查询。因为我们想返回属于 指定分类的所有产品,我们需要写一个返回数据行的SELECT语句。

在ASP.NET 2.0中操作数据之一:创建一个数据访问层

图 15: 选择生成一个返回数据行的SELECT语句

下一步是定义用于访问数据的SQL查询语句。因为我们只想返回属于指定分类的那些产品,我重 用GetProducts()里的SELECT语句,但添加了一个WHERE 子 句:WHERE CategoryID = @CategoryID。其中的@CategoryID参数 向TableAdapter配置向导表示我们正在生成的方法将需要一个对应类(即,可为null-nullable的整数)的输入 参数。

在ASP.NET 2.0中操作数据之一:创建一个数据访问层

图 16: 输入一个只返回指定分类的产品的查询

在最后一步,我们可以选择使用何种数据访问模式,还可以定制生成的方法的名字。对应于Fill 模式,让我们把名字改成FillByCategoryID,对返回DataTable模式的方法(GetX方法),让我们来用GetProductsByCategoryID这个名字。

在ASP.NET 2.0中操作数据之一:创建一个数据访问层

图 17: 为TableAdapter的方法选择名字

在结束向导后,DataSet设计器包含了这些新的TableAdapter的方法。

在ASP.NET 2.0中操作数据之一:创建一个数据访问层

图18: 通过分类来查询产品

花点时间用同样的手法添加一个GetProductByProductID(productID) 方法。

这些参数化的查询可以在DataSet设计器里直接测试。在TableAdapter中的方法上按右鼠标,然后选择“预 览数据(Preview Data)”。接着,输入对应参数的值,然后按“预览(Preview)”。

在ASP.NET 2.0中操作数据之一:创建一个数据访问层

图19: 属于饮料(Beverages)类的那些产品列单

通过我们的DAL中的GetProductsByCategoryID(categoryID)方法,我们就能设计一 个ASP.NET网页来显示属于指定分类的那些产品。下面这个例子显示了属于Beverages(饮 料)类(CategoryID=1)的

Beverages.aspx:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjwzpz.html