在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

ASP 3.0高級編程(414)

ASP 3.0高級編程(414)

更新時間:2022-05-14 文章作者:未知 信息來源:網絡 閱讀次數:

第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.2 遠程數據服務
遠程數據服務(Remote Data Services,RDS)是允許我們處理客戶端數據的一系列服務的統稱。現在不用擔心這方面的問題,因為RDS本身就是ADO的一部分,只有在需要傳送和使用客戶端數據時,才會使用。實際上RDS是由幾個組件構成的。圖10-1說明了這些組件以及它們之間是如何協同工作的。
圖10-1  RDS的組件構成
組件似乎很多,但并不是所有的組件在每種情形下都被使用,實際上有一些不是RDS的一部分。然而這里還是把所有可能出現的組件都放在了圖上,以備需要時查看。圖10-1分成了兩部分,因為使用客戶端數據需要一些向客戶端傳送數據的方法,同時數據一旦到達客戶端,也需要一些管理數據的方法。我們先從服務器端開始。

10.2.1 RDS服務器組件
雖然RDS用于傳送和訪問客戶端數據,但其確實有一些基于服務器的組件。這是必需的,因為肯定需要某種方式將數據傳送到客戶端。因此有了一系列能訪問數據并允許發送數據到客戶端的服務器組件。我們把實際的數據傳送稱為調度(marshal)。
服務器端組件圖的最上端是數據存儲,由OLE DB提供者訪問。它并不是RDS的一部分,但這表示只要有相應的OLE DB提供者,就可以通過RDS在客戶端使用任何數據。至于如何處理服務器上的數據,可以有兩種選擇:
· 數據工廠(DataFactory)是缺省的用于訪問數據存儲的服務器端組件。它作為服務器端RDS組件的一部分安裝在計算機上,除了能從數據存儲中獲取數據外,還為服務器處理發送到客戶端以及從客戶端發送來的數據。
· 自定義組件只是一個普通的提供了數據傳送方法的COM組件。當數據工廠不能提供所需的功能時,可以使用自定義組件。本章將介紹一個簡單的組件例子,在本書的后面還有一個更復雜的例子。
Web服務器使用這兩種組件作為客戶和服務器數據的接口。

10.2.2 RDS客戶組件
在客戶端先從底端的DataSpace對象開始,該對象作為客戶端的一部分與數據工廠或自定義對象協同工作。DataSpace對象是一個代理對象,負責與服務器進行通信,同時也是數據傳輸的通道(或者通常所說的調度)。DataSpace對象是用客戶端腳本語言或用HTML語言中的<OBJECT>標記創建的COM對象。在本章后面會看到關于這方面的例子。
DataSpace對象上面是數據源對象(Data Source Object,DSO),負責存儲客戶端數據。一個數據源對象包含一個ADO數據記錄集,與客戶數據緩存共同管理數據。客戶數據緩存只是一種管理客戶端數據的客戶光標服務。同時數據源對象又是一個COM對象,與DataSpace對象類似,也可以通過客戶端腳本或使用HTML語言中的<OBJECT>標記來創建。同樣,在本章稍后也會介紹關于這方面的一些例子。
數據源對象的上面是數據綁定管理器,任務是建立HTML控件與數據源對象的連接。這就是我們所知道的綁定,可以通過設置某些HTML控件的DATASRC和DATAFLD屬性來實現。下面將對這些內容進行討論,并示范如何在瀏覽器中方便地使用數據。

10.2.3 支持RDS的瀏覽器
要知道RDS是微軟的技術,因此只能在微軟的瀏覽器上工作。實際上,只有在IE 4.0或更高版本的瀏覽器中才完全支持RDS。
當編寫依賴于RDS的應用程序時,需要注意訪問應用程序的客戶的RDS版本可能與服務器端有所不同。舉例來說,IE 4中的是RDS 1.5版本,而IE 5、Office 2000和Visual Studio 6中的則是RDS 2.0版本。有兩種方法可以處理這種兼容性問題:
· 確保所有用戶已經升級到RDS的最新版本。如果客戶運行的是Windows 2000,那么已經在運行最新版本的RDS了。否則,可以從網址www.microsoft.com/data處下載。RDS 2.5版本是目前最新的隨同Windows 2000一起發布的版本,同時也是一個可單獨下載的軟件包。
· 當連接到數據源時,指定數據工廠的模式。這可以指定使用的是哪一個版本的RDS組件,后面將介紹這方面的一個例子。

10.2.4 數據源對象
數據源對象是一個存儲和管理客戶端數據的客戶端對象。因為這是使用RDS最簡單的一種方式,首先研究一下這些對象。
這里有幾個不同的數據源對象,每一個都針對不同類型的數據:
· 表格數據控件(Tabular Data Control,TDC),用于處理表格形式或分隔形式的文本文件。
· RDS數據控件,用于連接OLE DB數據存儲,能夠指定連接到哪個數據存儲,以及返回哪些數據。
· Java數據庫連接器,這是一個通過Java數據庫控件(Java DataBase Control,JDBC)連接到數據存儲的Java小程序。這里我們不想討論JDBC,因為它并不提供其他控件無法實現的功能。
· 微軟的HTML(MSHTML)數據源對象用HTML標記數據,并把它作為數據源。
· XML數據源對象使用XML數據,用于結構化的或任意結構的XML。
選用哪一種數據源對象取決于你想做什么,以及數據從哪里來。如果需要向客戶提供少量的數據,并且不允許用戶修改數據,那么表格數據控件(TDC)可能會比較適合。這種數據源是一個文本文件,不需要任何數據庫,因此編輯起來比較簡單。對于從數據庫中取出數據并且可能需要更新的情況,RDS數據控件是最合適的。而對于許多新數據源,會發現此時需要使用XML數據控件。這實際依賴于所使用的Web應用程序的類型,以及用戶所需的功能。
我們將依次介紹這些數據控件,一旦了解了如何用它們把數據傳送到客戶端,將會介紹如何使用這些數據。
1.  表格數據控件
表格數據控件(Tabular Data Control,TDC)是最簡單的數據源對象,主要用于少量的只讀數據,特別是那些從不改變或很少修改的,不需要從客戶端進行更新的靜態數據。例如,表格數據控件能提供一個網頁內的菜單項或鏈接的列表。
通過在HTML代碼中使用<OBJECT>標記可以創建一個表格數據控件。參數DataURL可以指定包含文本數據的文件名。
<OBJECT CLASSID="clsid:333C7BC4-460F-11D0-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","408 496-7223"
"219-46-8915","Green","Marjorie","415 986-7020"
"238-95-7766","Carson","Cheryl","415 548-7723"
"267-41-2394","O'Leary","Michael","408 286-2428"
"274-80-9391","Straight","Dean","415 834-2919"
"341-22-1782","Smith","Meander","913 843-0462"
"409-56-7008","Bennet","Abraham","415 658-9932"
TDC也可以自由定義。除了DataURL外,TDC還有16個參數,可以通過設置OBJECT標記的參數項或編寫腳本代碼來配置這些參數。參數的說明如表10-1所示:
表10-1  TDC的參數及說明
屬 性
數據類型
說 明
缺 省 值

AppendData
布爾型
確定新數據是替換還是追加到數據源對象中的現有數據
False

CaseSensitive
布爾型
指出字符串比較時是否大小寫敏感
True

CharSet
字符型
指出數據的字符集類型。附錄中字符集的列表
Windows-1252

DataURL
字符型
指出數據源文件的URL


EscapeChar
字符型
指定源文件中使用的轉義字符。這些字符位于其他字符的前面以避免與FieldDelim、RomDelim或TextQualifier混淆


FieldDelim
字符型
指定字段之間的分隔字符
,(逗號)

Filter
字符型
設置過濾條件


Filtercolumn
字符型
設置過濾的列


FilterValue
字符型
設置過濾的列的值


Language
字符型
指定數據文件使用的語言
en-us(美國英語)

ReadyState
長整型
指出控件的當前狀態。可以是以下值:adcReadyStateComplete(4)表明所有的數據都傳送完畢,或發生了一個錯誤
adcReadyStateInteractive(3)表明數據正在傳送中
adcReadyStateLoaded(2)表明控件已被加載并等待數據傳輸
這個屬性是只讀的


RowDelim
字符型
指定文本文件中的行分隔符,缺省為回車符
一個新行字符

Sort
字符型
指出要排序的列的列表。列名前有減號表明是按降序排序,否則按升序排序


SortDirection
布爾型
如果排序是升序則為True,降序則為False


SortColumn
字符型
指定排序的列


TextQualifier
字符型
指定封閉文本字段的字符,缺省為雙引號
"(雙引號)

UseHeader
布爾型
表明文本文件中首行是否包含列名
False

下面是使用參數創建TDC的一個例子。
<OBJECT CLASSID="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83"
                     ID="dsoAuthors" WIDTH="0" HEIGHT="0">
   <PARAM NAME="DataURL" VALUE="Authors.csv">
</OBJECT>
也可以在客戶端腳本中獲取數據,下面的例子顯示了給TDC加載數據的JScript腳本。
function fillTDC()
{
       dsoAuthors.dataURL = 'authors.csv';
       dsoAuthors.Reset();
}
如果改變了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" WIDTH="0" HEIGHT="0">
       <PARAM NAME="Connect" VALUE="Connection String">
       <PARAM NAME="Server" VALUE="Server Name">
       <PARAM NAME="SQL" VALUE="Query Text">
</OBJECT>
同樣,注意定制數據控件時參數的使用方法。上面的例子顯示了最常見的設置方法。和TDC一樣,還有很多其他可以設置的參數,如表10-2所示:
表10-2  RDS數據控件的參數及說明
屬  性
數據類型
說 明
缺 省 值

Connect
字符型
一個標識數據存儲的ADO連續字符串


ExecuteOptions
長整型
指出命令是異步執行還是同步執行。可以是以下值之一:
adcExecSync(1)同步執行(缺省值)
adcExecAsync(2)異步執行
adExecAsync

FetchOptions
長整型
獲取數據的方式,可以是以下值:
adcFetchUpFront(1)先取數據,然后將控制交給應用程序
adcFetchBackground(2)先立即取得第一批數據,剩余的數據在后臺獲取
adcFetchAsync(3)在后臺獲取所有的數據
adcFetchAsync

FilterColumn
字符型
指定被過濾的列


FilterCriterion
字符型
指定過濾的條件。可以是以下運算符:
<(小于)
<=(小于等于)
=(等于)
>=(大于等于)
>(大于)
<>(不等于)


FilterValue
字符型
過濾的值


Handler
字符型
自定義的數據處理器的名稱和參數
MSDFMAP.Handler

InternetTimeout
長整型
在錯誤發生前等待的時間(毫秒為單位)
300000

ReadyState
長整型
控件的當前狀態,可以是以下值:
adcReadyStateComplete(4)表明所有的數據都傳送完畢,或發生了一個錯誤
adcReadyStateInteractive(3)表明數據仍然在傳送中
adcReadyStateLoaded(2)表明控件已被加載并等待數據傳輸


Recordset
記錄集型
數據控件訪問的ADO數據記錄集。該參數只讀


Server
字符型
數據所在的服務器的名稱。為了安全,必須與提供Web頁面的服務器同名。可以是一個標準URL,也可以是機器名稱(如果使用DCOM)


SortColumn
字符型
排序的列名


SortDirection
布爾型
表明排序是否為升序


SourceRecordset
字符型
將控件的基礎記錄集設置為一個現有的記錄集。該屬性只寫


SQL
字符型
獲取數據的SQL字符串


URL
字符型
數據源的URL


溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 国产精品videossex国产高清| 激情成人开心网| 国产精品久久久久久久久电影网| 成人免费毛片播放| 日韩av三级在线| 久久久久久免费看| 成人在线播放网址| 69sex久久精品国产麻豆| 色一情一乱一乱一区91| 欧美在线a视频| 日本特黄在线观看| 国产精品一区在线免费观看| 999热精品视频| 一区二区三区入口| 大陆极品少妇内射aaaaa| 四虎永久免费网站| 国产xxxxx视频| www黄色日本| 欧美 日韩 国产 高清| 欧美在线观看www| 欧洲av无码放荡人妇网站| 日本免费不卡一区二区| wwwxxx黄色片| 欧美成人三级在线播放| 午夜视频在线网站| aaa免费在线观看| 亚洲色成人www永久在线观看| av在线播放天堂| 欧美 日韩 国产一区| 香港日本韩国三级网站| 可以在线看黄的网站| 黄色大片中文字幕| 最新中文字幕2018| 国产91沈先生在线播放| 成人综合视频在线| 污污视频在线免费| 999在线观看视频| 奇米影视四色在线| 国产精品av免费观看| 国产精品动漫网站| 奇米777在线| 日本久久久精品视频| 天堂网成人在线| 99爱视频在线| 99亚洲国产精品| 亚洲人成无码www久久久| 亚洲免费在线播放视频| 妞干网在线视频观看| 日韩一级免费片| 国产欧美日韩小视频| 亚洲久久中文字幕| 日本成年人网址| 日本不卡一区二区三区四区| 丁香婷婷激情网| 国产真实老熟女无套内射| 少妇人妻互换不带套| 91视频 - 88av| wwwwwxxxx日本| 亚洲乱码中文字幕久久孕妇黑人| av中文字幕网址| 免费激情视频在线观看| 亚洲天堂av免费在线观看| 91免费视频网站在线观看| 中文字幕乱码免费| 91小视频在线播放| 热久久精品国产| 91视频最新入口| 妞干网在线播放| 亚洲精品天堂成人片av在线播放 | 欧美精品久久久久久久久久久| 色一情一区二区三区| 欧美精品第三页| 国内自拍视频网| 色综合手机在线| 91香蕉视频污版| 超碰在线人人爱| 可以看污的网站| 婷婷中文字幕在线观看| 182午夜在线观看| 在线播放黄色av| 欧美日韩在线免费观看视频| 天天久久综合网| 成人短视频在线看| 国产午夜精品视频一区二区三区| 红桃一区二区三区| 精品视频在线观看一区| 极品美女扒开粉嫩小泬| 欧美 国产 日本| 老司机久久精品| 四虎精品欧美一区二区免费| 一二三四中文字幕| 国产日产欧美视频| 欧美一级xxxx| 精品久久久久久无码中文野结衣| 国产h视频在线播放| 中文字幕永久视频| 国产精品igao激情视频| 国产青青在线视频| 国产精品视频中文字幕| 日本福利视频一区| www.51色.com| 国产乱子伦农村叉叉叉| 亚欧精品在线视频| 91视频 -- 69xx| 日本福利视频导航| 阿v天堂2017| 不卡的在线视频| 国产中文字幕二区| 中文字幕av不卡在线| 欧美成人三级在线视频| 日韩大片一区二区| 免费av观看网址| 亚洲黄色网址在线观看| 免费看国产曰批40分钟| aaa一级黄色片| 日韩在线一级片| 免费国产成人看片在线| 男人女人黄一级| 久久视频这里有精品| 中文字幕视频三区| 久久精品香蕉视频| 久艹视频在线免费观看| 7777在线视频| 中文字幕视频三区| 国产一级特黄a大片免费| 国产91xxx| 少妇人妻在线视频| 国产欧美久久久久| 日韩一二区视频| japanese在线视频| www.se五月| 中文字幕第80页| 国产精品一区二区羞羞答答| 国产成人黄色片| 国产成人黄色片| 116极品美女午夜一级| 91好吊色国产欧美日韩在线| 青青青在线观看视频| 国自产拍偷拍精品啪啪一区二区| 青青草精品视频在线观看| 欧美三级午夜理伦三级| 奇米777四色影视在线看| 精品一卡二卡三卡| 亚洲77777| 男女爽爽爽视频| 丁香啪啪综合成人亚洲| 精品一区二区中文字幕| 成人毛片视频网站| 亚洲免费av一区二区三区| 成年网站在线免费观看| 日韩大片一区二区| 182午夜视频| 人人妻人人澡人人爽精品欧美一区| 中文字幕色网站| 日本精品免费视频| 国产精品自拍片| 精品久久久久久久无码| www.这里只有精品| a级免费在线观看| 黄色片视频在线播放| 日本国产一级片| 国产av人人夜夜澡人人爽麻豆| 国产69精品久久久久久久| 熟妇人妻无乱码中文字幕真矢织江| 九九九在线观看视频| 91蝌蚪视频在线| 国产二区视频在线| 邪恶网站在线观看| 成年人看的毛片| 亚洲精品高清无码视频| 中文字幕线观看| 免费国产黄色网址| 亚洲网中文字幕| 美女av免费在线观看| 午夜免费视频网站| 日韩精品一区二区三区久久| 交换做爰国语对白| 日本xxxxxxx免费视频| 日韩成人三级视频| 99精品999| 99草草国产熟女视频在线| 蜜桃网站在线观看| 色一情一区二区三区| 免费无码av片在线观看| 神马午夜伦理影院| 亚洲黄色av网址| 九色在线视频观看| 国产精品一色哟哟| 少妇熟女一区二区| 伊人五月天婷婷| 黑人粗进入欧美aaaaa| 国产精品999视频| www插插插无码视频网站| 二级片在线观看| 亚洲精品成人在线播放| 可以免费观看av毛片| 美女av免费在线观看| 每日在线观看av| 男女啪啪免费视频网站| 99热久久这里只有精品|