快速业务通道

ASP.NET 2.0数据教程之四十八:在SqlDataSource中使用参数化查询

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
上一节教程中做的那样,从下拉列表中选择Products表,并勾上ProductID、 ProductName以及UnitPrice这三列。

ASP.NET 2.0数据教程之四十八:在SqlDataSource中使用参数化查询

图一:从表或视图中选取需要返回的列

要在一个SELECT语句中加上一个 WHERE子句,点击一下“WHERE”按钮,这会弹出一个“添加 WHETE子句”对话框(见图二)。要添加一个用于限制SELECT查询所返回的 结果的参数,首先需要选择用来筛选数据的列。然后选择一个用于筛选的操作符 (=、<、<=、>、……)。最后,选择这个参数的值的来 源,比如说它来自QueryString或Session。配置好参数之后,点击“添加 ”按钮就可以将它加入到SELECT语句中了。

比如说我们现在只想要 结果中那些UnitPrice小于等于25美刀的东东。那么我们需要在“列” 下拉列表中选中UnitPrice,并在“操作符” 下拉列表中选中 “<=”。如果需要使用一个硬编码的参数值(比如25美刀),或者 如果参数值需要通过编程的方式进行指定,就在“来源” 下拉列表中 选中“无”。然后在“值”输入框中输入硬编码参数值( 比如25美刀),并单击“添加”按钮以结束这个过程。

ASP.NET 2.0数据教程之四十八:在SqlDataSource中使用参数化查询

图二:在“添加WHERE子句”对话框中限制返回的结果

添加了参数之后,点击“确定”以返回“配置数据源 ”向导。现在,显示在向导底部的SELECT语句将会跟上一个带有名为 @UnitPrice的参数的WHERE子句:

1SELECT [ProductID], [ProductName], [UnitPrice]
2FROM [Products]
3WHERE ([UnitPrice] <= @UnitPrice)

注意:如果你在“添加 WHERE子句”对话框中为WHERE子句指定了多个条件,向导将使用AND操作符 将它们连接起来。如果你需要在WHERE子句中包含一个OR操作符(比如WHERE UnitPrice <= @UnitPrice OR Discontinued = 1),那么就只能通过自定义 SQL语句页来生成这个SELECT语句。

结束SqlDataSource的配置(点击 “下一步”,然后点击“结束”),并检查其声明标记代 码。现在的标记代码包含了一个<SelectParameters>集合,它详细的说明 了SelectCommand中的参数的来源。

1<asp:SqlDataSource ID="Products25BucksAndUnderDataSource" runat="server"
2  ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>"
3   SelectCommand=
4    "SELECT [ProductID], [ProductName], [UnitPrice]
5    FROM [Products] WHERE ([UnitPrice] <= @UnitPrice)">
6  <SelectParameters>
7     <asp:Parameter DefaultValue="25.00" Name="UnitPrice" Type="Decimal" />
8   </SelectParameters>
9</asp:SqlDataSource>

在SqlDataSource的Select()方 法被调用时,UnitPrice参数值(25美刀)将在SelectCommand被发送到服务器之 前赋值给参数@UnitPrice。从Products表所返回的结果将仅仅包含单价小于等于 25美刀的那些产品。来做一个确认,向页面添加一个GridView,绑定这个数据源 ,然后在浏览器中看看这个页面。如图三所示,你将只会看到单价小于等于25美 刀的产品列在那里。

ASP.NET 2.0数据教程之四十八:在SqlDataSource中使用参数化查询

图三:只有单价小于等于25美刀的产品才被显示出来

第二步: 给自定义SQL语句添加参数

添加一个自定义SQL语句时,你可以直接输入一 个WHERE子句,也可以在“查询生成器”的“筛选器”那里 指定一个值。为了说明这个操作,我们来试试在GridView中显示单价小于某一个 起点的那些产品。首先,向ParameterizedQueries.aspx的页面上添加一个 T

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号