手机版

在ASP.NET 2.0中操作数据六十五:在TableAdapters中创建新的存储过程

时间:2021-10-30 来源:互联网 编辑:宝哥软件园 浏览:

导言:

在本教程中,数据访问层使用类型化数据集。正如我们在第1章《创建一个数据访问层》中所讨论的,这个类型化数据集由强类型的DataTable和TableAdapter组成。DataTable描述了系统中的逻辑实体,TableAdapter指的是相关的数据库进行数据访问,包括将数据填充到DataTable中、执行返回标量数据的请求、添加、更新和删除数据库中的记录等。

要么是TableAdapter执行的SQL命令是特定的SQL语句,如SELECT columnList FROM TableName;要么是存储过程。本教程前一部分中的TableAdapter使用SQL语句。然而,许多开发人员和数据库管理员为了安全和易于维护,更喜欢使用存储过程。然而,出于灵活性的考虑,有些人更喜欢使用SQL语句。就我而言,我也更喜欢存储过程。在前一篇文章中,出于简化的目的,我选择了SQL语句。

当定义一个新的TableAdapter或添加一个新的方法时,我们可以通过使用TableAdapter的安装向导轻松地创建一个新的或使用一个现有的存储过程。在本文中,我们将研究如何使用安装向导自动生成存储过程。在下一章中,我们将研究如何设置TableAdapter的方法来使用现有的或手动创建的存储过程。

注:关于讨论是使用存储过程还是SQL语句,请参考Rob Howard的博文《Don't Use Stored Procedures Yet?》(http://weblogs . ASP . net/rho ward/archive/2003/11/17/38095 . aspx)和Frans Bouma的博文《Stored Procedures are Bad, M'Kay?》(http://weblogs . ASP . net/fboue/2003/11/18/38178 . aspx)。

存储过程基金会

存储过程由一系列t-sqlstatement组成,这些t-sqlstatement在调用存储过程时执行。存储过程可以接受0到更多的输入参数,返回标量值、输出参数,或者最常见的返回SELECT查询值。

注意:存储过程通常被称为“存储过程”或“SPs”。

可以使用T-SQL语句CREATE PROCEDURE语句来创建存储过程。例如,下面的T-SQL脚本创建了一个名为GetProductsByCategoryID的存储过程,它有一个名为@CategoryID的参数。并返回“产品”表中与CategoryID值匹配的记录的productid、productname、unitprice和Discontinued值。

将过程getproductbycategoryid(@ categoryid int)创建为select productid、productname、单价、从产品折扣此处categoryid=@ categoryid后,我们可以用以下代码调用它:

exec product by category category id注意:在下一篇文章中,我们将在Visual Studio IDE集成环境中创建存储过程。但是,在本文中,我们将使用TableAdapter向导自动创建存储过程。

除了返回数据,我们还可以使用存储过程在一个事务中执行多个数据库命令。例如,假设有一个名为DeleteCategory的存储过程,其中包含一个输入参数@CategoryID,并执行两个DELETE statemets,第一个是删除相关产品,第二个是删除Category。存储过程中的多个语句不会自动封装在事务中。我们应该添加额外的T-SQL命令,以确保存储过程中的多个数据库命令被视为原子操作。我们将在下面的内容中研究如何用事务封装存储过程的命令。

当在系统的某一层使用存储过程时,数据访问层的方法将调用特定的存储过程,而不是发出SQL语句命令。这样,我们可以找到并分析发出的查询命令,更清楚地看到数据库是如何使用的。有关存储过程基本原理的更多信息,请参考本文末尾的扩展阅读。

第一步:创建数据访问层高级场景的网页。

在我们开始之前,让我们花点时间来创建这篇文章和下面的文章。

版权声明:在ASP.NET 2.0中操作数据六十五:在TableAdapters中创建新的存储过程是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。