给数据访问层添加参数化的方法
至此ProductsTableAdapter只有一个方法GetProducts()它返回数据库里的所有产品能够操作所有的产品当然有用但很多时候我们想要获取关于一个指定产品的信息或者属于某个特定分类的所有产品要想给我们的数据访问层添加这样的功能我们可以给TableAdapter添加参数化的方法
添加参数化让我们来添加一个GetProductsByCategoryID(categoryID)方法为给DAL添加新的方法让我们回到DataSet设计器在ProductsTableAdapter上按右鼠标然后选择添加查询(Add Query)
)thisstylewidth=; border=>
图 : 在TableAdapter上按右鼠标选择添加查询
向导首先会问我们是否要通过一个adhoc SQL语句还是生成一个新存储过程或者使用现有存储过程来访问数据库让我们还是选择使用SQL 语句接着向导会问我们使用什么类型的SQL查询因为我们想返回属于指定分类的所有产品我们需要写一个返回数据行的SELECT语句
image onmousewheel=javascript:return big(this) height= alt= hspace= src=http://imgeducitycn/img_///jpg width= onload=javascript:if(thiswidth>)thisstylewidth=; border=>
图 : 选择生成一个返回数据行的SELECT语句
添加参数化的下一步是定义用于访问数据的SQL查询语句因为我们只想返回属于指定分类的那些产品我重 用GetProducts()里的SELECT语句但添加了一个WHERE 子 句WHERE CategoryID = @CategoryID其中的@CategoryID参数向TableAdapter配置向导表示我们正在生成的方法将需要一个对应类(即可为nullnullable的整数)的输入参数
image onmousewheel=javascript:return big(this) height= alt= hspace= src=http://imgeducitycn/img_///jpg width= onload=javascript:if(thiswidth>)thisstylewidth=; border=>
图 : 输入一个只返回指定分类的产品的查询
在添加参数化的最后一步我们可以选择使用何种数据访问模式还可以定制生成的方法的名字对应于Fill 模式让我们把名字改成FillByCategoryID对返回DataTable模式的方法(GetX方法)让我们来用GetProductsByCategoryID这个名字
image onmousewheel=javascript:return big(this) height= alt= hspace= src=http://imgeducitycn/img_///jpg width= onload=javascript:if(thiswidth>)thisstylewidth=; border=>
图 : 为TableAdapter的方法选择名字
在结束向导后DataSet设计器包含了这些新的TableAdapter的方法
image onmousewheel=javascript:return big(this) height= alt= hspace= src=http://imgeducitycn/img_///jpg width= onload=javascript:if(thiswidth>)thisstylewidth=; border=>
图: 通过分类来查询产品
花点时间用同样的手法添加一个GetProductByProductID(productID) 方法
这些参数化的查询可以在DataSet设计器里直接测试在TableAdapter中的方法上按右鼠标然后选择预览数据(Preview Data)接着输入对应参数的值然后按预览(Preview)
image onmousewheel=javascript:return big(this) height= alt= hspace= src=http://imgeducitycn/img_///jpg width= onload=javascript:if(thiswidth>)thisstylewidth=; border=>
图: 属于饮料(Beverages)类的那些产品列单
通过我们的DAL中的GetProductsByCategoryID(categoryID)方法我们就能设计一个网页来显示属于指定分类的那些产品下面这个例子显示了属于Beverages(饮料)类(CategoryID=)的所有产品
Beveragesaspx
< %@ Page Language=C# AutoEventWireup=true CodeFile=Beveragesaspxcs Inherits=Beverages %>
< !DOCTYPE html PUBLIC //WC//DTD XHTML Transitional//EN transitionaldtd>
< html xmlns= >
< head runat=server>
< title>Untitled Pagetitle>
< link rel=stylesheet type=text/css />
< /head>
< body>
< form id=form runat=server>
< div>
< h>Beveragesh>
< p>
< asp:GridView ID=GridView runat=server CssClass=DataWebControlStyle>
< HeaderStyle CssClass=HeaderStyle />
< AlternatingRowStyle CssClass=AlternatingRowStyle />
asp:GridView>
< /p>
< /div>
< /form>
< /body>
< /html>
Beveragesaspxcs
using System;
using SystemData;
using SystemConfiguration;
using SystemCollections;
using SystemWeb;
using SystemWebSecurity;
using SystemWebUI;
using SystemWebUIWebControls;
using SystemWebUIWebControlsWebParts;
using SystemWebUIHtmlControls;
using NorthwindTableAdapters;
public partial class Beverages : SystemWebUIPage
{
protected void Page_Load(object sender EventArgs e)
{
ProductsTableAdapter productsAdapter = new ProductsTableAdapter();
GridViewDataSource = productsAdapterGetProductsByCategoryID();
GridViewDataBind();
}
}
image onmousewheel=javascript:return big(this) height= alt= hspace= src=http://imgeducitycn/img_///jpg width= onload=javascript:if(thiswidth>)thisstylewidth=; border=>
图 : 属于Beverages(饮料)类的所有产品显示