下载 第10章ASP与客户端数据 在一本ASP专著中讨论客户端数据,这与服务器端的ASP编程是否矛盾?情况并非如此, 因为我们至今尚未碰到只从事服务器端编程的ASP程序员。虽然ASP是一项服务器端技术,但 可以想像,编程人员不可能仅仅使用ASP进行编程。从事ASP编程的web开发人员,仍然需要 与客户端数据进行交互。 因此,围绕着ASP构建一个应用程序时必须考虑整个应用程序的情况,这也意味着必须 考虑客户端。为了获得一个运行良好、快速响应的应用程序,需要很好地使用客户端数据。 本章将讨论如何在客户端使用数据。特别将着重研究: ·远程数据服务( Remote Data Services,RDS),如何向客户端传送数据以及从客户端接收 数据。 ·如何将ADO记录集绑定到HTML控件。 如何利用用户自定义组件提供数据 如何更新客户端数据,并将其反馈到服务器 如何从数据库中获取图像并将其显示在Web页面中。 ·如何创建基于表格的Web页面 以上覆盖的范围相当广泛,同时有很多不同的方法可以取得相同的结果,但实际上实现 起来并不是特别困难。 10.1断开连接的记录集 首先需要掌握的是“断开连接的数据”的概念。迄今为止,在研究ADO的过程中,已经 学习了获取记录集的方法,以及如何修改这些记录集中的数据。回顾一下,我们打开一个记 录集,对数据做一些修改,然后再关闭这个记录集,在操作记录集的过程中,始终与服务器 持着连接。这是相当明显的,但别忘了Web在本质上是无状态的。如果想使用客户端数据 如何始终保持与服务器的连接?很简单,这是不可能实现的,这也是定义断开连接的记录 概念的缘由 个断开连接的记录集只是一个普通的记录集,但解除了与服务器的连接,成为孤立的 对象,可以像普通的记录集那样对其执行更新、增加和删除操作。但这些变化只发生在记录 集内部,并不反馈到服务器,因为记录集与服务器已不再保持着连接。这并不是缺点,因为 可以与服务器重新建立连接,同时服务器可以对任何修改进行更新。即使服务器端的数据已 经改变了,ADO仍然有方法让用户及时发现这些变化,这样用户就能决定哪些数据是正确的 这称为冲突处理( conflict resolution) 断开连接的记录集使我们能在组件之间,包括服务器与客户之间,传送具有全部功能的 记录集。本章后面将探讨如何在组件内创建断开连接的记录集。但这里不准备对此做过于详 细的研究,因为在本书第13章至第18章已经覆盖了这部分内容,这里仅做简单的介绍,以便 于了解组件是如何与远程数据服务交互
下载 第10章 ASP与客户端数据 在一本A S P专著中讨论客户端数据,这与服务器端的 A S P编程是否矛盾?情况并非如此, 因为我们至今尚未碰到只从事服务器端编程的 A S P程序员。虽然A S P是一项服务器端技术,但 可以想像,编程人员不可能仅仅使用 A S P进行编程。从事A S P编程的We b开发人员,仍然需要 与客户端数据进行交互。 因此,围绕着 A S P构建一个应用程序时必须考虑整个应用程序的情况,这也意味着必须 考虑客户端。为了获得一个运行良好、快速响应的应用程序,需要很好地使用客户端数据。 本章将讨论如何在客户端使用数据。特别将着重研究: • 远程数据服务(Remote Data Services,R D S ),如何向客户端传送数据以及从客户端接收 数据。 • 如何将A D O记录集绑定到H T M L控件。 • 如何利用用户自定义组件提供数据。 • 如何更新客户端数据,并将其反馈到服务器。 • 如何从数据库中获取图像并将其显示在 We b页面中。 • 如何创建基于表格的We b页面。 以上覆盖的范围相当广泛,同时有很多不同的方法可以取得相同的结果,但实际上实现 起来并不是特别困难。 10.1 断开连接的记录集 首先需要掌握的是“断开连接的数据”的概念。迄今为止,在研究 A D O的过程中,已经 学习了获取记录集的方法,以及如何修改这些记录集中的数据。回顾一下,我们打开一个记 录集,对数据做一些修改,然后再关闭这个记录集,在操作记录集的过程中,始终与服务器 保持着连接。这是相当明显的,但别忘了 We b在本质上是无状态的。如果想使用客户端数据, 如何始终保持与服务器的连接?很简单,这是不可能实现的,这也是定义断开连接的记录集 概念的缘由。 一个断开连接的记录集只是一个普通的记录集,但解除了与服务器的连接,成为孤立的 对象,可以像普通的记录集那样对其执行更新、增加和删除操作。但这些变化只发生在记录 集内部,并不反馈到服务器,因为记录集与服务器已不再保持着连接。这并不是缺点,因为 可以与服务器重新建立连接,同时服务器可以对任何修改进行更新。即使服务器端的数据已 经改变了,A D O仍然有方法让用户及时发现这些变化,这样用户就能决定哪些数据是正确的。 这称为冲突处理(conflict resolution)。 断开连接的记录集使我们能在组件之间,包括服务器与客户之间,传送具有全部功能的 记录集。本章后面将探讨如何在组件内创建断开连接的记录集。但这里不准备对此做过于详 细的研究,因为在本书第 1 3章至第1 8章已经覆盖了这部分内容,这里仅做简单的介绍,以便 于了解组件是如何与远程数据服务交互的
300Asp高箱程 Chinapub. coM 下载 102远程数据服务 远程数据服务( Remote data services,RDS)是允许我们处理客户端数据的一系列服务的统 称。现在不用担心这方面的问题,因为RDS本身就是ADO的一部分,只有在需要传送和使用 客户端数据时,才会使用。实际上RDS是由几个组件构成的。图10-1说明了这些组件以及它 们之间是如何协同工作的 客户端 服务器 数据存储 数据绑定 管理器 OLE DB 提供者 客户端 数据源 数据缓存 DataFactory 对象 组件 DataSpace eb 服务器 图10-1RDS的组件构成 组件似乎很多,但并不是所有的组件在每种情形下都被使用,实际上有一些不是RDS的 一部分。然而这里还是把所有可能出现的组件都放在了图上,以备需要时查看。图10-1分成 了两部分,因为使用客户端数据需要一些向客户端传送数据的方法,同时数据一旦到达客户 端,也需要一些管理数据的方法。我们先从服务器端开始 10.21RDS服务器组件 虽然RDS用于传送和访问客户端数据,但其确实有一些基于服务器的组件。这是必需的, 因为肯定需要某种方式将数据传送到客户端。因此有了一系列能访问数据并允许发送数据到 客户端的服务器组件。我们把实际的数据传送称为调度( marsha) 服务器端组件图的最上端是数据存储,由 OLE DB提供者访问。它并不是RDS的一部分, 但这表示只要有相应的 OLE DB提供者,就可以通过RDS在客户端使用任何数据。至于如何处 理服务器上的数据,可以有两种选择 数据工厂( DataFactory)是缺省的用于访问数据存储的服务器端组件。它作为服务器端 RDS组件的一部分安装在计算机上,除了能从数据存储中获取数据外,还为服务器处理 发送到客户端以及从客户端发送来的数据 自定义组件只是一个普通的提供了数据传送方法的COM组件。当数据工厂不能提供所 需的功能时,可以使用自定义组件。本章将介绍一个简单的组件例子,在本书的后面还 有一个更复杂的例子 eb服务器使用这两种组件作为客户和服务器数据的接口
10.2 远程数据服务 远程数据服务(Remote Data Services,R D S )是允许我们处理客户端数据的一系列服务的统 称。现在不用担心这方面的问题,因为 R D S本身就是A D O的一部分,只有在需要传送和使用 客户端数据时,才会使用。实际上 R D S是由几个组件构成的。图 1 0 - 1说明了这些组件以及它 们之间是如何协同工作的。 图10-1 RDS的组件构成 组件似乎很多,但并不是所有的组件在每种情形下都被使用,实际上有一些不是 R D S的 一部分。然而这里还是把所有可能出现的组件都放在了图上,以备需要时查看。图 1 0 - 1分成 了两部分,因为使用客户端数据需要一些向客户端传送数据的方法,同时数据一旦到达客户 端,也需要一些管理数据的方法。我们先从服务器端开始。 10.2.1 RDS服务器组件 虽然R D S用于传送和访问客户端数据,但其确实有一些基于服务器的组件。这是必需的, 因为肯定需要某种方式将数据传送到客户端。因此有了一系列能访问数据并允许发送数据到 客户端的服务器组件。我们把实际的数据传送称为调度 ( m a r s h a l )。 服务器端组件图的最上端是数据存储,由 OLE DB提供者访问。它并不是 R D S的一部分, 但这表示只要有相应的OLE DB提供者,就可以通过R D S在客户端使用任何数据。至于如何处 理服务器上的数据,可以有两种选择: • 数据工厂 ( D a t a F a c t o r y )是缺省的用于访问数据存储的服务器端组件。它作为服务器端 R D S组件的一部分安装在计算机上,除了能从数据存储中获取数据外,还为服务器处理 发送到客户端以及从客户端发送来的数据。 • 自定义组件只是一个普通的提供了数据传送方法的 C O M组件。当数据工厂不能提供所 需的功能时,可以使用自定义组件。本章将介绍一个简单的组件例子,在本书的后面还 有一个更复杂的例子。 We b服务器使用这两种组件作为客户和服务器数据的接口。 300计计ASP 3 高级编程 下载 客户端 Name: Client: 服务器 数据绑定 管理器 数据源 对象 网络 DataSpace 对象 客户端 数据缓存 数据存储 OLE DB 提供者 Web 服务器 DataFactory 对象 自定义 组件
Chinaopub.com 第1049与客户端经据30 下载 10.22RDS客户组件 在客户端先从底端的 DataSpace对象开始,该对象作为客户端的一部分与数据工厂或自定 义对象协同工作。 DataSpace对象是一个代理对象,负责与服务器进行通信,同时也是数据传 输的通道(或通常所说的调度)。 DataSpace对象是用客户端脚本语言或用HTML语言中的 < OBJECT>标记创建的COM对象。在本章后面会看到关于这方面的例子。 DataSpace对象上面是数据源对象( Data Source Object,Dso),负责存储客户端数据 个数据源对象包含一个ADO数据记录集,与客户数据缓存共同管理数据。客户数据缓存只是 种管理客户端数据的客户光标服务。同时数据源对象又是一个COM对象,与 DataSpace对象 类似,也可以通过客户端脚本或使用HTML语言中的< OBJECT>标记来创建。同样,在本章 稍后也会介绍关于这方面的一些例子。 数据源对象的上面是数据绑定管理器,任务是建立HTML控件与数据源对象的连接。这 就是我们所知道的绑定,可以通过设置某些HTML控件的 DATASRO和 DATAFLD属性来实现 下面将对这些内容进行讨论,并示范如何在浏览器中方便地使用数据 10.23支持RDS的浏览器 要知道RDS是微软的技术,因此只能在微软的浏览器上工作。实际上,只有在IE40或更 高版本的浏览器中才完全支持RDS。 当编写依赖于RDS的应用程序时,需要注意访问应用程序的客户的RDS版本可能会与服 务器端有所不同。举例来说,IE4中的是RDS1.5版本,而IE5、 Office2000和 Visual studio6 中的则是RDS20版本。有两种方法可以处理这种兼容性问题 确保所有用户已经升级到RDS的最新版本。如果客户运行的是 Windows2000,那么已经 在运行最新版本的RDS了。否则,可以从网址www.microsoftcom/data处下载。RDS 25版本是目前最新的随同 Windows2000一起发布的版本,同时也是一个可单独下载的 软件包。 ·当连接到数据源时,指定数据工厂的模式。这可以指定使用的是哪一个版本的RDS组件, 后面将介绍这方面的一个例子 10.24数据源对象 数据源对象是一个存储和管理客户端数据的客户端对象。因为这是使用RDS最简单的一 种方式,首先研究一下这些对象 里有几个不同的数据源对象,每一个都针对不同类型的数据: 表格数据控件( Tabular data control,TDC),用于处理表格形式或分隔形式的文本文件 ·RDS数据控件,用于连接 OLE DB数据存储,能够指定连接到哪个数据存储,以及返回 哪些数据。 Java数据库连接器,这是一个通过Java数据库控件( Java Data Base Control,JDBC)连接 到数据存储的Java小程序。这里我们不想讨论JDBC,因为它并不提供其他控件无法实 现的功能 微软的HTML( MSHTML)数据源对象用HTML标记数据,并把它作为数据源
10.2.2 RDS客户组件 在客户端先从底端的 D a t a S p a c e对象开始,该对象作为客户端的一部分与数据工厂或自定 义对象协同工作。D a t a S p a c e对象是一个代理对象,负责与服务器进行通信,同时也是数据传 输的通道 (或通常所说的调度 )。D a t a S p a c e对象是用客户端脚本语言或用 H T M L语言中的 <O B J E C T>标记创建的C O M对象。在本章后面会看到关于这方面的例子。 D a t a S p a c e对象上面是数据源对象 (Data Source Object,D S O ),负责存储客户端数据。一 个数据源对象包含一个 A D O数据记录集,与客户数据缓存共同管理数据。客户数据缓存只是 一种管理客户端数据的客户光标服务。同时数据源对象又是一个 C O M对象,与D a t a S p a c e对象 类似,也可以通过客户端脚本或使用 H T M L语言中的<O B J E C T>标记来创建。同样,在本章 稍后也会介绍关于这方面的一些例子。 数据源对象的上面是数据绑定管理器,任务是建立 H T M L控件与数据源对象的连接。这 就是我们所知道的绑定,可以通过设置某些 H T M L控件的D ATA S R C和D ATA F L D属性来实现。 下面将对这些内容进行讨论,并示范如何在浏览器中方便地使用数据。 10.2.3 支持R D S的浏览器 要知道R D S是微软的技术,因此只能在微软的浏览器上工作。实际上,只有在 IE 4.0或更 高版本的浏览器中才完全支持 R D S。 当编写依赖于 R D S的应用程序时,需要注意访问应用程序的客户的 R D S版本可能会与服 务器端有所不同。举例来说, IE 4中的是RDS 1.5版本,而IE 5、O ffice 2000和Visual Studio 6 中的则是RDS 2.0版本。有两种方法可以处理这种兼容性问题: • 确保所有用户已经升级到R D S的最新版本。如果客户运行的是 Windows 2000,那么已经 在运行最新版本的 R D S了。否则,可以从网址 w w w.microsoft.com/data 处下载。R D S 2 . 5版本是目前最新的随同 Windows 2000一起发布的版本,同时也是一个可单独下载的 软件包。 • 当连接到数据源时,指定数据工厂的模式。这可以指定使用的是哪一个版本的 R D S组件, 后面将介绍这方面的一个例子。 10.2.4 数据源对象 数据源对象是一个存储和管理客户端数据的客户端对象。因为这是使用 R D S最简单的一 种方式,首先研究一下这些对象。 这里有几个不同的数据源对象,每一个都针对不同类型的数据: • 表格数据控件( Tabular Data Control,T D C ),用于处理表格形式或分隔形式的文本文件。 • R D S数据控件,用于连接 OLE DB数据存储,能够指定连接到哪个数据存储,以及返回 哪些数据。 • J a v a数据库连接器,这是一个通过 J a v a数据库控件(Java DataBase Control,J D B C )连接 到数据存储的 J a v a小程序。这里我们不想讨论 J D B C,因为它并不提供其他控件无法实 现的功能。 • 微软的H T M L ( M S H T M L )数据源对象用H T M L标记数据,并把它作为数据源。 第1 0章 A S P与客户端数据计计301 下载
302 ASP3高级编程 Chinaopub.com 下载 XML数据源对象使用ⅹML数据,用于结构化的或任意结构的ⅹML 选用哪一种数据源对象取决于你想做什么,以及数据从哪里来。如果需要向客户提供 少量的数据,并且不允许用户修改数据,那么表格数据控件(TDC)可能会比较适合。这种 数据源是一个文本文件,不需要任何数据库,因此编辑起来比较简单。对于从数据库中取 出数据并且可能需要更新的情况,RDS数据控件是最合适的。而对于许多新数据源,会发 现此时需要使用ⅹML数据控件。这实际依赖于所使用的Wεb应用程序的类型,以及用户所 需的功能 我们将依次介绍这些数据控件,一旦了解了如何用它们把数据传送到客户端,将会介绍 如何使用这些数据 表格数据控件 表格数据控件( Tabular data control,TDC)是最简单的数据源对象,主要用于少量的只读 数据,特别是那些从不改变或很少修改的,不需要从客户端进行更新的静态数据。例如,表 格数据控件能提供一个网页内的菜单项或链接的列表 通过在HTML代码中使用< OBJECT>标记可以创建一个表格数据控件。参数 AtauRO可 以指定包含文本数据的文件名 <OBJECT CLASSID=clsid: 333C7BC4-460F-11DO-BC04-0080C7055A83 ID=" dsoAuthors· WIDTH=”0· HEIGHT=”0> <PARAM NAME="DataURL VALUE='Authors. Csv"> </OBJECT> TDC只读取表格中的数据或标记为表格形式的数据,例如,可以处理逗号分隔形式的数 据( Comma Separated value,cSv),类似于下面的数据 172-32-1176"," White,"Bob","408496-7223 213-46-8915"," Green," Marjorie","415986-7020 238-95-7766"," Carson"," Chery1·,415548-7723 267-41-2394","o' Leary"," Michae1·,408286-2428 274-80-9391," Straight',"Dean·,"415834-2919 341-22-1782°, Smith”," Meander","913843-0462 09-56-7008°," Bennet"," Abraham",415658-9932 TDC也可以由自定义。除了 DataURL外,TDC还有16个参数,可以通过设置 OBJECT标记 的参数项或编写脚本代码来配置这些参数。参数的说明如表10-1所示。 表10-1TDC的参数及说明 数据类型 缺省值 AppendData 布尔型 确定新数据是替换还是追加到数据源对象中的现 有数据 CaseSensitive 布尔型 指出字符串比较时是否大小写敏感 True 字符型 指出数据的字符集类型。附录中有字符集的列表 DataURL 字符型 指出数据源文件的URL Escape Char 字符型 指定源文件中使用的转义字符。这些字符位于其他 字符的前面以避免与 Field Delim、 RowDelim或 TextQuali- fier混淆 Field Delim 字符型 指定字段之间的分隔字符 字符型 设置过滤条件 Filtercolumn 字符型 设置过滤的列
• XML数据源对象使用X M L数据,用于结构化的或任意结构的 X M L。 选用哪一种数据源对象取决于你想做什么,以及数据从哪里来。如果需要向客户提供 少量的数据,并且不允许用户修改数据,那么表格数据控件 ( T D C )可能会比较适合。这种 数据源是一个文本文件,不需要任何数据库,因此编辑起来比较简单。对于从数据库中取 出数据并且可能需要更新的情况, R D S数据控件是最合适的。而对于许多新数据源,会发 现此时需要使用 X M L数据控件。这实际依赖于所使用的 We b应用程序的类型,以及用户所 需的功能。 我们将依次介绍这些数据控件,一旦了解了如何用它们把数据传送到客户端,将会介绍 如何使用这些数据。 1. 表格数据控件 表格数据控件( Tabular Data Control,T D C )是最简单的数据源对象,主要用于少量的只读 数据,特别是那些从不改变或很少修改的,不需要从客户端进行更新的静态数据。例如,表 格数据控件能提供一个网页内的菜单项或链接的列表。 通过在H T M L代码中使用<O B J E C T>标记可以创建一个表格数据控件。参数 D a t a U R L可 以指定包含文本数据的文件名。 T D C只读取表格中的数据或标记为表格形式的数据,例如,可以处理逗号分隔形式的数 据(Comma Separated Va l u e,C S V ),类似于下面的数据: T D C也可以由自定义。除了D a t a U R L外,T D C还有1 6个参数,可以通过设置O B J E C T标记 的参数项或编写脚本代码来配置这些参数。参数的说明如表 1 0 - 1所示。 表10-1 TDC的参数及说明 属 性 数据类型 说 明 缺 省 值 A p p e n d D a t a 布尔型 确定新数据是替换还是追加到数据源对象中的现 F a l s e 有数据 C a s e S e n s i t i v e 布尔型 指出字符串比较时是否大小写敏感 Tr u e C h a r S e t 字符型 指出数据的字符集类型。附录中有字符集的列表 Wi n d o w s - 1 2 5 2 D a t a U R L 字符型 指出数据源文件的U R L E s c a p e C h a r 字符型 指定源文件中使用的转义字符。这些字符位于其他 字符的前面以避免与F i e l d D e l i m、R o w D e l i m或Te x t Q u a l i - f i e r混淆 F i e l d D e l i m 字符型 指定字段之间的分隔字符 ,(逗号) F i l t e r 字符型 设置过滤条件 F i l t e r c o l u m n 字符型 设置过滤的列 302计计ASP 3 高级编程 下载
China coM 第10章43与容户端数据303 下载 数据类型 缺省值 Filter Value 字符型 设置过滤的列的值 字符型 指定数据文件使用的语言 en-us(美国英语) 长整型 指出控件的当前状态。可以是以下值: adcReady State Complete(4)表明所有的数据都传 送完毕,或发生了一个错误 adc Ready Statelnteractive(3)表明数据正在传送中 adc Ready State Loaded2)表明控件已被加载并等 待数据传输 这个属性是只读的 Row Delim 指定文本文件中的行分隔符,缺省为回车符 个新行字符 字符型 指出要排序的列的列表。列名前有减号表明是按 降序排序,否则按升序排序 ort Direction 布尔型 如果排序是升序则为True,降序则为 False SortColumn 指定排序的列 字符型 指定封闭文本字段的字符,缺省为双引号 (双引号) UseHeader 布尔型 表明文本文件中首行是否包含列名 下面是使用参数创建TDC的一个例子。 <OBJECT CLASSID="clsid: 333C7BC4-460F-11DO-BC04-0080C7055A83 ID= dsoAuthors·iDH="0· HIEIGHT="0"> <PARAM NAME"DataURL. VALUE="Authors. csv"> </OBJECT> 也可以在客户端脚本中获取数据,下面的例子显示了给TDC加载数据的 JScript脚本。 function fillTDC( asoAuthors =‘ authors,csv'; dsoAuthors Re 如果改变了TDC的 DataURL参数,必须使用 Reset方法,这样才能使新的URL起作用。当 介绍数据绑定时,会更详细地讨论如何使用它。 Reset方法是TDC唯一的一个方法。 2.RDS数据控件 RDS数据控件能够访问一般的数据存储,而不是平面文件。它通常用于连接SQL数据库 以从表、査询或存储过程获取数据。与TDC不同,RDS数据控件允许更新数据。在本章稍后 通过示例说明如何进行数据更新 类似于TDC,可以用HTML脚本中的 OBJECT标记来创建一个RDS数据控件,并以类似的 方式设置其属性 <OBJECT CLASSID . clsid: BD96C556-65A3-11D0-983A-00C04FC29E33 ID=" dsoAuthors·wIDH=·0· HEIGHT="0"> NAME="Connect. vALUE="Connection string> AME=· Server· VALUE=" Server Name"> NAMER'SQL" VALUE= 'Query Text> 同样,注意定制数据控件时参数的使用方法。上面的例子显示了最常见的设置方法。和 TDC一样,还有很多其他可以设置的参数,如表10-2所示
(续) 属 性 数据类型 说 明 缺 省 值 F i l t e r Va l u e 字符型 设置过滤的列的值 L a n g u a g e 字符型 指定数据文件使用的语言 en-us(美国英语) R e a d y S t a t e 长整型 指出控件的当前状态。可以是以下值: adcReadyStateComplete(4) 表明所有的数据都传 送完毕,或发生了一个错误 adcReadyStateInteractive(3) 表明数据正在传送中 adcReadyStateLoaded(2) 表明控件已被加载并等 待数据传输 这个属性是只读的 R o w D e l i m 字符型 指定文本文件中的行分隔符,缺省为回车符 一个新行字符 S o r t 字符型 指出要排序的列的列表。列名前有减号表明是按 降序排序,否则按升序排序 S o r t D i r e c t i o n 布尔型 如果排序是升序则为Tr u e,降序则为F a l s e S o r t C o l u m n 字符型 指定排序的列 Te x t Q u a l i f i e r 字符型 指定封闭文本字段的字符,缺省为双引号 " (双引号) U s e H e a d e r 布尔型 表明文本文件中首行是否包含列名 F a l s e 下面是使用参数创建T D C的一个例子。 也可以在客户端脚本中获取数据,下面的例子显示了给 T D C加载数据的J S c r i p t脚本。 如果改变了T D C的D a t a U R L参数,必须使用R e s e t方法,这样才能使新的 U R L起作用。当 介绍数据绑定时,会更详细地讨论如何使用它。 R e s e t方法是T D C唯一的一个方法。 2. RDS数据控件 R D S数据控件能够访问一般的数据存储,而不是平面文件。它通常用于连接 S Q L数据库 以从表、查询或存储过程获取数据。与 T D C不同,R D S数据控件允许更新数据。在本章稍后 通过示例说明如何进行数据更新。 类似于T D C,可以用H T M L脚本中的O B J E C T标记来创建一个R D S数据控件,并以类似的 方式设置其属性。 同样,注意定制数据控件时参数的使用方法。上面的例子显示了最常见的设置方法。和 T D C一样,还有很多其他可以设置的参数,如表 1 0 - 2所示。 第1 0章 A S P与客户端数据计计303 下载