ASP.NET 中的数据源控件

ASP.NET 包括一组数据源控件,您可以使用这些控件与不同类型的数据源交互。所有数据源控件均提供相同的基本功能,与所进行交互的基础数据源无关。例如,所有数据源控件都支持用来检索数据的 Select 方法。


本主题提供 ASP.NET 中不同类型的数据源控件的有关信息。数据源控件模型是可扩展的,因此您也可以创建自己的数据源控件,以便与不同的数据源进行交互或为现有数据源提供附加功能。


SQLDataSource 控件



SqlDataSource 控件允许使用 SQL 命令检索和更新数据。SqlDataSource 控件可与 SQL Server、OLE DB、ODBC 和 Oracle 数据库一起使用,具体取决于为您的应用程序配置的数据提供程序。默认情况下,该控件与 SQL Server 一起使用。


连接


配置 SqlDataSource 控件时,在 ConnectingString 属性中指定连接字符串,此属性包含控件连接到数据库所需的信息。根据数据源控件所访问的数据库类型的不同,连接字符串的内容也不相同。例如,SqlDataSource 控件(以及与 SQL Server 交互的其他任何数据源控件)要求指定服务器名称、数据库(目录)名称以及有关如何对用户进行身份验证的信息。


可以将连接字符串集中存储在应用程序的配置设置中,而不是在设计时在数据源控件中设置连接字符串。在这种情况下,可以通过编程方式检索连接字符串,并在该页运行时将连接字符串分配给数据源控件。


命令


最多可以为 SqlDataSource 控件指定四个命令(SQL 查询): SelectCommand 、 UpdateCommand 、 DeleteCommand 和 InsertCommand 。每个命令代表数据源控件的一个单独的属性。对于每一个命令属性,指定数据源控件应执行的 SQL 语句。如果数据源控件连接的数据库支持存储过程,您可以指定存储过程的名称来代替为命令指定的 SQL 语句。


可以创建包含值的占位符的参数化命令,并在运行时提供值。下面的示例演示了典型的参数化 SQL Select 命令:


Select CustomerID, CompanyName From Customers Where city = @city


可以创建参数对象来指定在运行时命令将从何处获取参数值,例如从另一个控件、从查询字符串等等。或者您也可以通过编程方式指定参数值。

当调用 Select 、 Update 、 Delete 或 Insert 方法时,数据源控件将执行相应的命令。当调用页的 DataBind 方法或调用绑定到数据源控件的某个控件的 DataBind 方法时,将自动调用 Select 方法。当您需要数据源控件执行某个命令时,还可以显式调用四个方法中的任何一个方法。某些控件(如 GridView 命令)可以自动调用这些方法,而无需您调用这些方法或显式调用 DataBind 方法。有关详细信息,请参见 演练:Visual Web Developer 中的基本数据访问 和 演练:在 Visual Web Developer 中创建主/从页 。


返回数据的格式


SqlDataSource 控件返回数据的形式有两种:作为数据集或作为数据读取器,您可以通过设置数据源控件的 DataSourceMode 属性来选择数据返回形式。数据集包含内存中的所有数据,这样您可以在检索数据之后以各种方式来操作数据。数据读取器提供一个可以获取各个记录的只读游标。通常,如果您需要在检索数据之后对数据进行筛选、排序或分页,或者如果需要保留缓存,则应选择返回数据集。相反,如果您只是需要返回数据并将其加载(绑定)到页上的控件中,则应使用数据读取器。例如,如果您希望将返回的数据显示在 ListBox、DropDownList GridView 控件中,则使用数据读取器是理想的选择。

缓存



SqlDataSource 控件可以缓存其检索的数据,这样避免了高开销的查询,从而可以增强应用程序的性能。几乎在数据变动不是太频繁的所有情况下,缓存都具有实用价值。


默认情况下不启用缓存,但是您可以通过将 EnableCaching 设置为 true 来启用缓存。缓存机制基于时间;您可以将 CacheDuration 属性设置为数据要缓存的秒数。数据源控件为每一组连接、Select 查询、参数和缓存设置组合维护一个单独的缓存。


如果您的 SQL Server 版本具有 SQL Server 的缓存依赖项功能,则 SqlDataSource 控件还可以利用此功能。此功能允许您指定一个数据库和表。在 SQL Server 报告指定的表发生更改之前,始终保留缓存中的数据。可以在 Web 应用程序中使用这种类型的缓存来产生高性能的数据访问,因为可以将数据检索次数降到最少,也就是只有在需要获取刷新的数据时才执行数据检索操作。


排序和筛选


如果您已缓存数据,并已指定数据集作为 Select 查询返回数据的格式,则还可以在不重新运行查询的情况下对数据进行筛选。SqlDataSource 控件支持 FilterExpression 属性,您可以使用此属性指定应用于数据源控件所维护的数据的选择条件。通过创建特殊的 FilterParameters 对象在运行时为筛选表达式提供值,还可以对筛选表达式进行参数化。


AccessDataSource 控件



AccessDataSource 控件是 SqlDataSource 类的专用版本,简化后专门用于 Access .mdb 文件。不必指定完整的连接字符串,只需将 DataFile 属性设置为指向 .mdb 文件即可。如果要求 .mdb 文件使用用户名和密码,可以指定该用户名和密码。可以使用 ShareMode 属性指定 .mdb 文件是只读还是读写的。就像 SqlDataSource 控件一样,也使用 SQL 语句来定义控件获取和检索数据的方式。


XmlDataSource 控件



可以使用 XmlDataSource 控件绑定到 XML 数据,以便可以利用 TreeViewMenu 等控件使用该 XML 数据。XmlDataSource 控件可以绑定到 XML 文件,也可以绑定到内存表示形式中的 XML 数据。如果有描述数据的架构,XmlDataSource 控件也可以利用此架构来提供类型化成员。


通过将控件的 TransformFile 属性设置为 .xsl 文件的名称,您可以为 XML 数据指定 XSLT 转换。通过转换,可以将 XML 文件中的原始数据重新构建为更适合在您的页面中进行绑定的格式。应用转换会使数据处于只读状态。


还可以通过设置控件的 XPath 属性,对 XML 数据应用 XPath 筛选器。通过指定 XPath 表达式,可以对 XML 数据进行筛选,以便只返回 XML 树中特定级别的节点,在这些节点中查找包含特定值的节点等等。使用 XPath 表达式将禁用插入新数据的功能。


ObjectDataSource



可以通过 ObjectDataSource 控件来使用业务对象或其他返回数据的类。ObjectDataSource 控件可以帮助您创建依靠中间层业务对象来管理数据的多层 Web 应用程序。


ObjectDataSource 控件是基于以下假设来设计的:由与之交互的对象来实现其他数据源支持的相同基本功能。例如,为了支持 ObjectDataSource 控件,业务对象必须实现执行基本数据操作(选择、更新、删除和插入)的公开方法。与其他数据源控件一样,ObjectDataSource 控件允许您指定可在运行时填充的参数。


支持选择调用的对象方法必须返回一个数据集,或者返回实现 IEnumerable 接口的另一个对象。此控件可以缓存查询结果,并且您可以指定该控件可以对缓存的数据应用的筛选器。


对象必须至少具有一个可以在不使用参数的情况下调用的构造函数,ObjectDataSource 控件将调用该构造函数来实例化对象。假设对象无状态;ObjectDataSource 控件在每次调用方法以执行数据操作时都将创建和销毁对象。


SiteMapDataSource



可以通过 SiteMapDataSource 控件来使用为站点配置的站点地图提供程序所存储的站点地图数据。当您需要通过非站点导航专用控件的 Web 服务器控件(如 TreeViewDropDownList 控件)来使用站点地图数据时,此控件尤其有用。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值