加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

在ASP.NET 2.0中操作数据之四十六:使用SqlDataSource控件检索数

发布时间:2016-11-24 13:16:59 所属栏目:MsSql教程 来源:站长网
导读:导言 到目前为止,我们探讨的教程是由表现层,业务逻辑层和数据访问层构成的层次体系结构。数据访问层和业务逻辑层分别在教程第一和第二章提到。在Displaying Data With the ObjectDataSource 这篇教程里,我们探讨了怎样用ASP.NET 2.0的新控件--ObjectDat

导言

  到目前为止,我们探讨的教程是由表现层,业务逻辑层和数据访问层构成的层次体系结构。数据访问层和业务逻辑层分别在教程第一和第二章提到。在Displaying Data With the ObjectDataSource 这篇教程里,我们探讨了怎样用ASP.NET 2.0的新控件--ObjectDataSource控件在表现层展示数据。

  本教程到目前为止用这种层次结构来处理数据。然而绕过这种体系结构,通过直接把数据查询和业务逻辑放在Web页面上,也可以达到直接在ASP.NET页面上访问,插入,更新,删除数据库数据的目的。对十分庞大或者复杂的应用程序而言,使用层次结构对程序的成功和可维护性是很重要的。然而对很简单的程序来说,没有必要使用层次体系结构。

  ASP.NET 2.0 提供了5个内建的数据源控件, SqlDataSource控件, AccessDataSource控件, ObjectDataSource控件, XmlDataSource控件, 和SiteMapDataSource控件。SqlDataSource控件能直接从关系型数据库中访问和更新数据,包括Microsoft SQL Server,Microsoft Access, Oracle, MySQL等数据库。在本章以及接下来的3章教程里面,我们将探讨如何用SqlDataSource控件来查询和筛选数据库数据,包括插入,更新和删除。

/uploads/allimg/c161121/14OI93BP260-194038.gif
图1:ASP.NET 2.0 的5个内建的数据源控件

比较ObjectDataSource控件和 SqlDataSource控件

  从理论上说,ObjectDataSource控件和 SqlDataSource控件都是作为访问数据的一种代理。就象在教程Displaying Data With the ObjectDataSource中讨论的那样,可以在ObjectDataSource控件中设置展示数据的数据类型,以及用来选择,插入,更新和删除数据所调用的方法。一旦完成了ObjectDataSource控件的设置,GridView, DetailsView, DataList等数据Web控件便可以通过绑定ObjectDataSource控件调用其Select(), Insert(), Delete(), 和 Update() methods方法。

  虽然SqlDataSource控件具有和SqlDataSource控件同样的功能,但使用SqlDataSource控件时,我们必须提供详细的数据库连接字符串,以及用来执行选择,更新,插入,删除数据的ad-hoc SQL查询或存储过程。当调用SqlDataSource控件的Select(), Insert(), Update(), and Delete() 方法时,SqlDataSource控件连接到数据库,并传递适当的SQL查询。下图展示了这些方法如何连接数据库,传递查询和返回结果。

/uploads/allimg/c161121/14OI93C0U40-2031D.gif
图2  SqlDataSource控件充当访问数据库的代理

注意:在本章教程中我们主要关注如何从数据库获得数据,在后面的教程中,我们将讨论如何通过设置SqlDataSource控件以支持插入,更新和删除数据。

SqlDataSource 控件和 AccessDataSource 控件

  除了 SqlDataSource 控件外,ASP.NET 2.0 还包AccessDataSource 控件。这两种不同的控件使很多开发者误以为AccessDataSource 控件主要是被设计来与Microsoft Access数据库打交道,SqlDataSource 控件主要是被设计来来与Microsoft SQL Server打交道。实际情况是,SqlDataSource 控件可以与几乎所有.NET能访问的关系型数据库打交道。包括任何 OleDb, ODBC,compliant data stores,比如:Microsoft SQL Server, Microsoft Access, Oracle, Informix, MySQL, and PostgreSQL等。

  SqlDataSource 控件和 AccessDataSource 控件的唯一区别在于AccessDataSource 控件的数据库连接信息只需要提供Access数据库文件的访问路径。而SqlDataSource 控件则需要提供完整的连接字符串。

第一步:创建 SqlDataSource 页面

  在我们探讨用SqlDataSource控件直接操作数据库数据之前,让我们先花些时间在我们的站点项目里添加这些本节里和下三节里需要的ASP.NET页面。首先添加一个名为SqlDataSource的文件夹,在里面添加下列页面,并配置为使用Site.master母板页。

Default.aspx
Querying.aspx
ParameterizedQueries.aspx
InsertUpdateDelete.aspx
OptimisticConcurrency.aspx

/uploads/allimg/c161121/14OI93F5RP-21G37.gif
图3:为SqlDataSource相关教程添加页面

  类似在其它文件夹里,EditInsertDelete文件夹里的Default.aspx将列出这些教程章节。记得用户控件提供这个功能。因此,从解决方案资源管理器中拖拽一个这个用户控件到页面的设计视图,从而添加它到Default.aspx页面

/uploads/allimg/c161121/14OI93FW40-22a59.gif
图4:将用户控件添加到Default.aspx页面

  最后把这4个页面加入站点地图中。打开Web.sitemap文件并且把下列代码加在“Adding Custom Buttons to the DataList and Repeater”siteMapNode标记之后:

<siteMapNode url="~/SqlDataSource/Default.aspx"
 title="Using the SqlDataSource Control"
 description="Work directly with database data using the SqlDataSource control.">
 <siteMapNode url="~/SqlDataSource/Querying.aspx" title="Retrieving Database Data"
  description="Examines how to query data from a database that can then be
      displayed through a data Web control."/>
 <siteMapNode url="~/SqlDataSource/ParameterizedQueries.aspx"
  title="Parameterized Queries"
  description="Learn how to specify parameterized WHERE clauses in the
      SqlDataSource's SELECT statement." />
 <siteMapNode url="~/SqlDataSource/InsertUpdateDelete.aspx"
  title="Inserting, Updating, and Deleting Database Data"
  description="See how to configure the SqlDataSource to include INSERT, UPDATE,
      and DELETE statements." />
 <siteMapNode url="~/SqlDataSource/OptimisticConcurrency.aspx"
  title="Using Optimistic Concurrency"
  description="Explore how to augment the SqlDataSource to include support for
      optimistic concurrency." />
</siteMapNode>


/uploads/allimg/c161121/14OI93G194Z-23O18.gif
图5:更新站点地图使之包含新的页面

第二步:添加并设置 SqlDataSource控件

(编辑:济南站长网)

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

热点阅读