加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2016-11-24 08:24:18 所属栏目:MsSql教程 来源:站长网
导读:导言: 本教程的Data Access Layer (DAL)使用的是类型化的数据集(Typed DataSets).就像我们在第一章《创建一个数据访问层》里探讨的一样,该类型化的数据集由强类型的DataTable和TableAdapter构成。DataTable描绘的是系统里的逻辑实体而TableAdapter引用相

导言:

  本教程的Data Access Layer (DAL)使用的是类型化的数据集(Typed DataSets).就像我们在第一章《创建一个数据访问层》里探讨的一样,该类型化的数据集由强类型的DataTable和TableAdapter构成。DataTable描绘的是系统里的逻辑实体而TableAdapter引用相关数据库执行数据访问,包括对DataTable填充数据、执行返回标量数据(scalar data)的请求、添加,更新,删除数据库里的记录等.

  TableAdapter执行的SQL命令要么是某个特定的SQL statements,比如SELECT columnList FROM TableName;要么是存储过程.本教程前面部分的TableAdapter使用的是SQL statements.不过很多开发者和数据库管理员基于安全、便于维护等方面的考虑,偏爱使用存储过程;不过也有的人出于灵活性的考虑偏爱使用SQL statement.就我自己而言,我也偏向于存储过程.在前面的文章,出于简化的目的我选用的是SQL statements.

  当定义一个新TableAdapter或添加新方法时,使用TableAdapter的设置向导,我们可以很容易的创建新的或使用现有的存储过程.在本文,我们将考察如何使用设置向导自动的生产存储过程。在下一章我们考察如何设置TableAdapter的方法使用现有的或手动创建存储过程.

  注意:关于讨论到底使用存储过程还是使用SQL statements的问题,可参考Rob Howard的博客文章《Don't Use Stored Procedures Yet?》(http://weblogs.asp.net/rhoward/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-SQL statement组成,当调用该存储过程时就执行这些T-SQL statement.存储过程可以接受0到多个输入参数,返回标量值、输出参数,或最常见的返回SELECT查询值.

  注意:存储过程Stored procedures也经常引用为“sprocs” or “SPs”.

  可以使用T-SQL statement语句CREATE PROCEDURE来创建存储过程.比如下面的T-SQL脚本创建了一个名为GetProductsByCategoryID的存储过程,它有一个名为 @CategoryID的参数,并且将表Products里与CategoryID值相吻合的那条记录的ProductID, ProductName, UnitPrice,以及Discontinued值返回.

CREATE PROCEDURE GetProductsByCategoryID
(
 @CategoryID int
)
AS

SELECT ProductID, ProductName, UnitPrice, Discontinued
FROM Products
WHERE CategoryID = @CategoryID

创建后,我们可以用下面的代码调用它:

EXEC GetProductsByCategory categoryID

  注意:在下篇文章我们将在Visual Studio IDE集成环境里创建存储过程.不过在本文,我们将用TableAdapter向导来自动创建存储过程.

  除了返回数据外,我们还可以在一个事务里用存储过程执行多条数据库命令.比如,假如有一个名为DeleteCategory的存储过程,其包含一个输入参数@CategoryID,并执行2个DELETE statemets,第一个是删除相关的products,第二个是删除category。存储过程里面的多个statements并不是自动的封装在一个事务里的.我们应添加额外的T-SQL commands以确保存储过程里的多条数据库命令当成原子操作处理.我们将在后面的内容考察如何用事务来封装存储过程的命令.

  当在体系的某个层使用存储过程时,Data Access Layer的方法将调用某个具体的存储过程而不是发出一个SQL statement命令.这样一来我们可以发现、分析发出的查询命令.并可以更清楚的看到数据库是如何使用的.有关存储过程基本原理的更多信息,可参考本文结束部分的延伸阅读.

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

在开始之前,让我们花点时间创建本文及后面几篇文章要用到的页面。新建一个名为AdvancedDAL的文件夹,然后添加如下的ASP.NET页面,记得使用母版页Site.master:

Default.aspx
NewSprocs.aspx
ExistingSprocs.aspx
JOINs.aspx
AddingColumns.aspx
ComputedColumns.aspx
EncryptingConfigSections.aspx
ManagedFunctionsAndSprocs.aspx

/uploads/allimg/c161121/14OI9522A310-W4630.png
图1:添加相关的页面

像其它文件夹一样,Default.aspx页面将列出本部分的内容,记得SectionLevelTutorialListing.ascx用户控件提供了该功能。因此,将其从解决资源管理器里拖放到Default.aspx页面.

/uploads/allimg/c161121/14OI9522bE0-XAb.png
图2:将SectionLevelTutorialListing.ascx用户控件拖到Default.aspx页面

最后,将这些页面添加到Web.sitemap文件里。特别的,把下面的代码放在“Working with Batched Data”

<siteMapNode>标签后面:

<siteMapNode url="~/AdvancedDAL/Default.aspx"
 title="Advanced DAL Scenarios"
 description="Explore a number of advanced Data Access Layer scenarios.">
 
 <siteMapNode url="~/AdvancedDAL/NewSprocs.aspx"
 title="Creating New Stored Procedures for TableAdapters"
 description="Learn how to have the TableAdapter wizard automatically
 create and use stored procedures." />
 <siteMapNode url="~/AdvancedDAL/ExistingSprocs.aspx"
 title="Using Existing Stored Procedures for TableAdapters"
 description="See how to plug existing stored procedures into a
 TableAdapter." />
 <siteMapNode url="~/AdvancedDAL/JOINs.aspx"
 title="Returning Data Using JOINs"
 description="Learn how to augment your DataTables to work with data
 returned from multiple tables via a JOIN query." />
 <siteMapNode url="~/AdvancedDAL/AddingColumns.aspx"
 title="Adding DataColumns to a DataTable"
 description="Master adding new columns to an existing DataTable." />
 <siteMapNode url="~/AdvancedDAL/ComputedColumns.aspx"
 title="Working with Computed Columns"
 description="Explore how to work with computed columns when using
 Typed DataSets." />
 <siteMapNode url="~/AdvancedDAL/EncryptingConfigSections.aspx"
 title="Protected Connection Strings in Web.config"
 description="Protect your connection string information in
 Web.config using encryption." />
 <siteMapNode url="~/AdvancedDAL/ManagedFunctionsAndSprocs.aspx"
 title="Creating Managed SQL Functions and Stored Procedures"
 description="See how to create SQL functions and stored procedures
 using managed code." />
</siteMapNode>

更新Web.sitemap文件后,花点时间在浏览器里查看,左边的菜单将包括本部分的内容.

/uploads/allimg/c161121/14OI95232C0-Y3056.png
图3:网站地图现在包含了不部分的页面

第二步:设置TableAdapter创建新的存储过程

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读