在在ASP.NET 2.0中操作数据之四十六:使用中操作数据之四十六:使用SqlDataSource控控
件检索数据件检索数据
在前面的教程里,我们用ObjectDataSource控件充分的将表现层和数据访问层(DAL)分开来。在这篇教程里
我们看看怎样在一个表现层和数据访问层区分的不是很严格的简单程序中使用SqlDataSource控件。
导言导言
到目前为止,我们探讨的教程是由表现层,业务逻辑层和数据访问层构成的层次体系结构。数据访问层和业务逻辑层分别
在教程第一和第二章提到。在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控件来查询和筛选数据库数据,包括插入,更新和删除。
图图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查询。下图展示了这
些方法如何连接数据库,传递查询和返回结果。
图图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
图图3:为:为SqlDataSource相关教程添加页面相关教程添加页面
类似在其它文件夹里,EditInsertDelete文件夹里的Default.aspx将列出这些教程章节。记得用户控件提供这个功能。因