• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > 在ASP.NET 2.0中操作数据之六十六:在TableAdapters中使用现有的存储过程

在ASP.NET 2.0中操作数据之六十六:在TableAdapters中使用现有的存储过程

作者:heker2007 字体:[增加 减小] 来源:互联网 时间:2017-05-11

heker2007通过本文主要向大家介绍了在ASP.NET 2.0中操作数据之六十六:在TableAdapters中使用现有的存储过程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

导言:

  在前面的文章里我们考察了如何让TableAdapters向导自动的创建存储过程.而在本文,我们将考察如何让TableAdapter使用现有的存储过程。由于Northwind数据库现有的存储过程很少,我们也需要考察如何在Visual Studio环境里手动向数据库添加新的存储过程.

  注意:在第61章《在事务里对数据库修改进行封装》里我们向TableAdapter添加了一些方法以支持事务(比如 (BeginTransaction, CommitTransaction等)。我们可以在不修改数据访问层代码的情况下,在一个存储过程里管理整个事务.在本文,我们还将对事务里执行存储过程的T-SQL commands命令进行考察.

第一步:向Northwind数据库添加存储过程

  我们很容易通过Visual Studio向数据库添加存储过程.让我们向Northwind数据库添加一个新存储过程,它返回Products表里特定CategoryID值的产品.在服务器资源管理窗口,展开Northwind数据库,就像我们在前面的文章看到的一样,存储过程文件夹包含了现有的存储过程。要添加新的存储过程的话,只需要右键单击存储过程文件夹,选“添加新存储过程”项,

http://files.weikejianghu.com/file_images/article/201605/201605190901551.png
图1:右击Stored Procedures文件夹选“Add a New Stored Procedure”

如图1所示,选“Add a New Stored Procedure”项后,将在Visual Studio里打开一个脚本窗口.输入如下的脚本:

CREATE PROCEDURE dbo.Products_SelectByCategoryID
(
 @CategoryID int
)
AS

SELECT ProductID, ProductName, SupplierID, CategoryID,
 QuantityPerUnit, UnitPrice, UnitsInStock, UnitsOnOrder,
 ReorderLevel, Discontinued
FROM Products
WHERE CategoryID = @CategoryID

</div>

  当执行该脚本时,将会向数据库添加一个名为Products_SelectByCategoryID的新存储过程,该存储过程接受一个输入参数(@CategoryID, 类型为int)并将与CategoryID值匹配的所有产品返回.

  执行该CREATE PROCEDURE脚本,将向数据库添加存储过程,点工具栏的保存按钮或按Ctrl+S。如此之后,刷新存储过程文件夹以显示最近添加的存储过程,如此一ilai部分由“CREATE PROCEDURE dbo.Products_SelectProductByCategoryID” 转变为“ALTER PROCEDURE dbo.Products_SelectProductByCategoryID”. CREATE PROCEDURE用于添加新存储过程,而ALTER PROCEDURE用于更新现有的存储过程。由于脚本开头部分已经转变为ALTER PROCEDURE, 我们可以通过改动输入参数或SQL statements并点击保存按钮,即可完成对存储过程的更新.图2显示的是保存Products_SelectByCategoryID存储过程后的画面.

http://files.weikejianghu.com/file_images/article/201605/201605190901552.png
图2:Products_SelectByCategoryID存储过程已经添加到数据库

第二步:设置TableAdapter使用现有的存储过程

  现在存储过程Products_SelectByCategoryID已经添加到数据库,我们将设置数据访问层使用该存储过程。具体说,我们将向ProductsTableAdapter添加GetProducstByCategoryID(categoryID)方法, 该方法将调用我们刚刚创建的存储过程Products_SelectByCategoryID.

  打开NorthwindWithSprocs数据集,在ProductsTableAdapter上右键单击,选“添加查询”以启用TableAdapter Query Configuration wizard.我们将使用刚刚创建的存储过程Products_SelectByCategoryID,因此选“Use existing stored procedure”项,然后点Next.

http://files.weikejianghu.com/file_images/article/201605/201605190901553.png
图3:选“Use existing stored procedure”项

  接下来的画面为一个下拉列表框,列出了数据库现有的所有存储过程,当选择某个存储过程的话,左边将列出其输入参数,右边将列出其返回列(如果有的话).在下拉列表里选Products_SelectByCategoryID存储过程,再点Next.

http://files.weikejianghu.com/file_images/article/201605/201605190901554.png
图4:选Products_SelectByCategoryID存储过程.

  接下来的画面询问我们存储过程返回的是哪种类型的数据,以及TableAdapter的方法返回的类型.比如,如果我们指定返回tabular data(表列数据)的话,该方法将返回一个ProductsDataTable instance实例;如果我们指定存储过程返回一个单一值(a single value)的话,TableAdapter将返回一个object(对象),该对象由存储过程返回的第一行的第一列来赋值.由于存储过程Products_SelectByCategoryID将返回某个category的所有产品,选第一项“Tabular data”,再点Next.

http://files.weikejianghu.com/file_images/article/201605/201605190901555.png
图5:指定存储过程返回Tabular Data

  然后需要指定采用的方法模式以及方法的名称.同时选中Fill a DataTable” 和 “Return a DataTable”项.将这2个方法重命名为FillByCategoryID和 GetProductsByCategoryID. 点Next,确认无误的话,再点Finish完成设置。

http://files.weikejianghu.com/file_images/article/201605/201605190901556.png
图6:将方法命名为FillByCategoryID 和 GetProductsByCategoryID

  注意:我们刚才添加FillByCategoryID 和 GetProductsByCategoryID方法,执行一个int类型的输入参数,它由@CategoryID传递进来。如果你要改动Products_SelectByCategory存储过程的参数的话,你也必须更新这些TableAdapter方法的参数.就像在前一篇文章探讨的一样,要么手动添加或删除参数集里的参数,要么再次运行TableAdapter向导.

第三步:在BLL层添加一个GetProductsByCategoryID(categoryID)方法

设置完DAL层的GetProductsByCategoryID方法后,下一步我们将在业务逻辑层添加方法以调用该方法.打开ProductsBLLWithSprocs class类的文件,添加如下方法:

[System.ComponentModel.DataObjectMethodAttribute
 (System.ComponentModel.DataObjectMethodType.Select, false)]
public NorthwindWithSprocs.ProductsDataTable GetProductByCategoryID(int categoryID)
{
 return Adapter.GetProductsByCategoryID(categoryID);

}
</div>

  该BLL层方法仅仅通过ProductsTableAdapter的 GetProductsByCategoryID()方法来返回ProductsDataTable。由于使用了DataObjectMethodAttribute属性,我们使用ObjectDataSource的设置数据源向导时,该方法会出现在SELECT标签的下拉列表中.

第四步:展示产品

  为测试新添加的Products_SelectByCategoryID存储过程,以及DAL 和 BLL层里的对应的方法, 我们将创建一个ASP.NET页面,该页面包含一个DropDownList控件以及一个 GridView控件.DropDownList控件列出数据库里所有的category,当选定某个category时,我们将在GridView里将属于该category的所有product展示出来.

  注意:我们在前面的文章里用DropDownList控件创建过主/从报表,更多细节请参考第7章《使用DropDownList过滤的主/从报表》

  打开AdvancedDAL文件夹里的ExistingSprocs.aspx页面,从工具箱里拖一个DropDownList控件到页面,设置其ID为Categories,AutoPostBack属性为true.接下来,在其智能标签里将其绑定到一个名为CategoriesDataSource的ObjectDataSource控件.设置该控件调用CategoriesBLL class类的GetCategories方法,而在UPDATE, INSERT, 以及DELETE标签里选“(None)”.

http://files.weikejianghu.com/file_images/article/201605/201605190901567.png
图7:调用CategoriesBLL Class类的GetCategories方法

http://files.weikejianghu.com/file_images/article/201605/201605190901568.png
图8:在UPDATE, INSERT,和DELETE标签里选“(None)”

完成ObjectDataSource向导后,我们设置DropDownList控件显示的是CategoryName列,而传递的Value值为CategoryID列.此时,DropDownList控件和ObjectDataSource控件的声明代码看起来和下

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-11TreeView无刷新获取text及value实现代码
  • 2017-05-11ASP.NET中集成百度编辑器UEditor
  • 2017-05-11ASP.NET微信公众号之用户分组管理web页面
  • 2017-05-11asp.net动态添加js文件调用到网页的方法
  • 2018-08-20使用微信PC端的截图dll库实现微信截图功能
  • 2017-05-11asp.net类库中添加WebService引用出现问题解决方法
  • 2017-05-11Asp.net在ashx文件中处理Session问题解决方法
  • 2017-05-11导致Asp.Net站点重启10个原因小结分析
  • 2017-05-11详解可跨域的单点登录(SSO)实现方案【附.net代码】
  • 2017-05-11mvc上传到美橙云虚拟机系列问题的解决方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 实现DataGridView控件中CheckBox列的使用实例
    • ASP.NET操作各类时间段获取方法汇总
    • 让GridView只显示特定用户的数据的方法
    • Asp.Net中的三种分页方式总结
    • 动态组合SQL语句方式实现批量更新的实例
    • asp.net类序列化生成xml文件实例详解
    • ASP.NET下备份与还原数据库代码
    • .net indexOf(String.indexOf 方法)
    • 在ASP.NET 2.0中操作数据之三十八:处理BLL和DAL的异常
    • 在ASP.NET 2.0中操作数据之五十四:添加新记录时包含一个文件上传选项

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有