• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

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

        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)是允許我們處理客戶端數據的一系列服務的統稱,F在不用擔心這方面的問題,因為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數據記錄集,與客戶數據緩存共同管理數據?蛻魯祿彺嬷皇且环N管理客戶端數據的客戶光標服務。同時數據源對象又是一個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


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

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 精品无码国产污污污免费网站| 美女视频黄.免费网址| 黄色网站软件app在线观看免费| 亚洲AV日韩精品一区二区三区| 日日摸日日碰夜夜爽亚洲| 国产青草视频免费观看97| 亚洲欧美在线x视频| 四虎亚洲国产成人久久精品| 全部一级一级毛片免费看| 亚洲无码精品浪潮| 黄色视频在线免费观看| 亚洲国产美女精品久久久久∴| 久久久久久AV无码免费网站下载| 亚洲日本va午夜中文字幕一区| 0588影视手机免费看片| 亚洲日韩中文字幕一区| 国产精品久久久久影院免费| 香蕉国产在线观看免费| 亚洲色成人网站WWW永久| 久久国产精品萌白酱免费| 亚洲国产美女精品久久久久| 处破痛哭A√18成年片免费| 国产成人亚洲精品青草天美| 国产99久久久国产精免费| 亚洲大成色www永久网站| xxxxx免费视频| 亚洲成av人无码亚洲成av人| 国产性爱在线观看亚洲黄色一级片 | 少妇亚洲免费精品| 人人爽人人爽人人片av免费| 亚洲bt加勒比一区二区| 久久天天躁狠狠躁夜夜免费观看| 国产亚洲欧美在线观看| 亚洲日韩aⅴ在线视频| 男女做羞羞的事视频免费观看无遮挡| 性色av极品无码专区亚洲| 亚洲精品午夜无码电影网| 我的小后妈韩剧在线看免费高清版 | 亚洲线精品一区二区三区影音先锋 | 无码的免费不卡毛片视频| 亚洲人成网站在线播放影院在线|