ASP.NET 2.0数据教程:给数据访问层添加参数化的方法

开发 后端
本文介绍了在asp.net 2.0中如何创建一个数据访问层(DAL)的第三步:给数据访问层添加参数化的方法。

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

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

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

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

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

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

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

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

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

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

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

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

为TableAdapter的方法选择名字 

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

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

通过分类来查询产品 

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

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

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

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

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

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

Beverages.aspx

asp.net 

  1.  < %@ Page Language="C#"   
  2.  
  3. AutoEventWireup="true" CodeFile="Beverages.aspx.cs"   
  4.  
  5. Inherits="Beverages" %>  
  6.  
  7. < !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0   
  8.  
  9. Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  10.  
  11. < html xmlns="http://www.w3.org/1999/xhtml" >  
  12. < head runat="server">  
  13.     < title>Untitled Pagetitle>  
  14.     < link href="Styles.css"   
  15.  
  16. rel="stylesheet"   
  17.  
  18. type="text/css"   
  19.  
  20. />  
  21. < /head>  
  22. < body>  
  23.     < form id="form1" runat="server">  
  24.     < div>  
  25.         < h1>Beveragesh1>  
  26.         < p>  
  27.             < asp:GridView ID="GridView1" runat="server" 
  28.              CssClass="DataWebControlStyle">  
  29.                < HeaderStyle CssClass="HeaderStyle" />  
  30.                < AlternatingRowStyle CssClass="AlternatingRowStyle" />  
  31.             asp:GridView>  
  32.              < /p>  
  33.     < /div>  
  34.     < /form>  
  35. < /body>  
  36. < /html>  
  37.  

Beverages.aspx.cs

  1. using System;  
  2. using System.Data;  
  3. using System.Configuration;  
  4. using System.Collections;  
  5. using System.Web;  
  6. using System.Web.Security;  
  7. using System.Web.UI;  
  8. using System.Web.UI.WebControls;  
  9. using System.Web.UI.WebControls.WebParts;  
  10. using System.Web.UI.HtmlControls;  
  11. using NorthwindTableAdapters;  
  12.  
  13. public partial class   
  14.  
  15. Beverages : System.Web.UI.Page  
  16. {  
  17.     protected void   
  18.  
  19. Page_Load(object sender, EventArgs e)  
  20.     {  
  21.         ProductsTableAdapter productsAdapter = new 
  22.          ProductsTableAdapter();  
  23.         GridView1.DataSource =  
  24.           productsAdapter.GetProductsByCategoryID(1);  
  25.         GridView1.DataBind();  
  26.     }  
  27. }  

属于Beverages(饮料)类的所有产品显示 

图 20: 属于Beverages(饮料)类的所有产品显示

【编辑推荐】

  1. 如何在IIS6.0中部署asp.net mvc程序
  2. 用Winform傻瓜式搭建asp.net mvc框架
  3. ASP.NET Session失效的编程思路
  4. ASP.NET Session 状态的存储
  5. 了解ASP.NET Web应用程序模型
责任编辑:book05 来源: 博客堂
相关推荐

2009-07-24 13:25:43

创建数据访问层

2009-07-24 14:15:51

数据访问层

2009-07-27 09:35:57

业务逻辑层

2009-07-24 16:55:53

添加aspx页面

2009-07-27 09:28:55

TableAdapte

2009-07-24 13:08:52

DataRowASP.NET 2.0

2009-07-24 13:08:03

BLL类ASP.NET 2.0

2009-07-24 14:23:16

定制编码DAL

2009-07-27 03:21:00

breadcrumb导

2009-07-24 17:08:31

添加站点地图asp.net

2009-08-19 10:54:42

ASP.NET数据访问

2009-07-24 13:07:59

BLL类

2009-07-27 03:23:00

Default.asp

2009-07-27 16:09:05

GridView显示数

2009-07-27 08:51:24

ObjectDataS

2009-08-04 10:17:55

ASP.NET SqlASP.NET数据访问

2009-07-24 17:15:52

SiteMapData

2009-07-27 16:22:54

GridView选择行

2009-07-24 12:41:21

BLL类

2009-07-27 09:01:44

ObjectDataS
点赞
收藏

51CTO技术栈公众号