ASP 3.0高級(jí)編程(三十六)_ASP教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
推薦:ASP進(jìn)階:用ASP制作統(tǒng)計(jì)餅圖、柱狀圖等我們工作中經(jīng)常需要將數(shù)據(jù)轉(zhuǎn)化成柱狀圖,餅圖等,以方便直觀的分析數(shù)據(jù), 這里給大家介紹一個(gè)ASP中制作餅圖、柱狀圖的組件:csDrawGraph,csdgt.zip,因?yàn)槭墙M件,所以我們在使用之前需要用REGSV
第8章 ADO基礎(chǔ)在本書前7章中,已經(jīng)講述了ASP的有關(guān)內(nèi)容,以及ASP如何為Web站點(diǎn)帶來動(dòng)態(tài)的內(nèi)容。已經(jīng)見到其腳本程序允許自定義Web頁面,使我們能夠構(gòu)建功能更為強(qiáng)大的ASP頁面。
現(xiàn)在,將研究ASP和數(shù)據(jù)的集成。雖然對用于網(wǎng)頁中的腳本數(shù)量并無任何限制,但如果沒有某種形式的數(shù)據(jù),很快就會(huì)進(jìn)入一個(gè)死胡同。數(shù)據(jù)構(gòu)成了Web站點(diǎn)的實(shí)際內(nèi)容,或者指出了如何設(shè)置Web站點(diǎn),因此總的說來數(shù)據(jù)是非常重要的。如果圍繞數(shù)據(jù)存儲(chǔ)建立Web站點(diǎn),改變Web站點(diǎn)時(shí)只需要改變相應(yīng)的數(shù)據(jù)即可。
ActiveX數(shù)據(jù)對象(ADO)是允許用戶與數(shù)據(jù)存儲(chǔ)進(jìn)行交互的組件。這意味著只要基于某些數(shù)據(jù)就可建立一個(gè)網(wǎng)頁,或一種完全交互的電子商務(wù)系統(tǒng)。不論哪種方式,都是ADO使我們能與數(shù)據(jù)進(jìn)行通信。我們將討論從數(shù)據(jù)存儲(chǔ)獲取和傳送數(shù)據(jù)的主要內(nèi)容,以及得到數(shù)據(jù)后的數(shù)據(jù)處理方法。
首先研究什么是ADO及其所包括的組件,然后討論如何訪問數(shù)據(jù)存儲(chǔ)。在下一章,將進(jìn)一步學(xué)習(xí)ADO更先進(jìn)的一些特性,如命令、存儲(chǔ)過程和優(yōu)化應(yīng)用程序的一些操作技巧。下一步研究Web服務(wù)器和瀏覽器之間的交互過程,以及數(shù)據(jù)處理過程。然后研究數(shù)據(jù)存取領(lǐng)域中極具潛力的XML。XML是什么?如何使用?因?yàn)閄ML代表著未來發(fā)展的一種趨勢,我們將介紹微軟關(guān)于通用數(shù)據(jù)存取的構(gòu)想。在這個(gè)構(gòu)想中,數(shù)據(jù)不只是從數(shù)據(jù)庫中獲得的。最后,看一下標(biāo)準(zhǔn)的微軟數(shù)據(jù)庫(如Access與SQL Server)以及在其中如何使用ADO。
本章從ADO開始,主要內(nèi)容有:
· 研究ADO如何與數(shù)據(jù)進(jìn)行交互。
· 了解ADO的組件。
· 如何與數(shù)據(jù)存儲(chǔ)連接和創(chuàng)建數(shù)據(jù)集。
· 如何處理和修改數(shù)據(jù)。
· 如何處理ADO錯(cuò)誤。
8.1 ADO的定義
ADO是一個(gè)相當(dāng)簡單的思想,一種讓你僅用一種方式去訪問數(shù)據(jù)的思想。ADO不算一個(gè)新思想,僅是采用現(xiàn)有的數(shù)據(jù)庫訪問技術(shù),并將其融合而形成的一種適應(yīng)現(xiàn)在和未來需要的新東西。適應(yīng)未來的需求是一件十分重要的事。許多其他的技術(shù),比如DAO和ODBC,在一些應(yīng)用程序的開發(fā)過程中是可以接受的,然而隨著Internet的興起也出現(xiàn)了其自身的一些問題。
在許多情況下,傳統(tǒng)的數(shù)據(jù)存取方法看上去能解決一些關(guān)于兩層客戶/服務(wù)器系統(tǒng)的問題,但要求與數(shù)據(jù)之間要保持一種永久性的連接,并要提供強(qiáng)大的功能,比如快速響應(yīng)的查詢、數(shù)據(jù)容易修改等。在Internet領(lǐng)域,現(xiàn)在必須考慮到Web無狀態(tài)性本質(zhì),和潛在的眾多可以訪問Web站點(diǎn)的用戶。要與數(shù)據(jù)建立永久的連接是不現(xiàn)實(shí)的,因此必須在設(shè)計(jì)應(yīng)用程序時(shí)考慮這些因素。
那么,OLD DB和ADO確切地講到底是什么?讓我們與一些已有的數(shù)據(jù)存取技術(shù)做比較后再來回答這個(gè)問題。如果讀者曾經(jīng)接觸過數(shù)據(jù)庫編程,或許比較熟悉ODBC和RDO。開放數(shù)據(jù)庫連接(ODBC)是允許訪問關(guān)系數(shù)據(jù)庫(比如Access和SQL Server)的應(yīng)用程序編程接口(API)。正因?yàn)槭且粋(gè)API,許多程序員,特別是Visual Basic領(lǐng)域的程序員,發(fā)現(xiàn)它使用起來很復(fù)雜。遠(yuǎn)程數(shù)據(jù)對象(RDO)是位于ODBC上層的ActiveX對象,可以提供ODBC的所有功能,并且使用起來比較簡單。
可以將OLE DB等同于ODBC,ADO等同于RDO。
OLE DB是應(yīng)用程序與數(shù)據(jù)源交互的一種基本技術(shù)。
這相當(dāng)復(fù)雜,確實(shí)也只有C和C 程序員能夠使用。正如ADO的名字所暗示的,它是易于訪問OLE DB功能的ActiveX對象。
你或許發(fā)現(xiàn)術(shù)語ActiveX與COM對象經(jīng);煊。對于ASP程序員來說它們并沒有本質(zhì)上的區(qū)別,因?yàn)閮烧叨蓟贑OM系統(tǒng)結(jié)構(gòu),只不過ActiveX是組件的一個(gè)跨平臺(tái)標(biāo)準(zhǔn),而COM是Windows專有的。
雖然微軟已經(jīng)引入了一種新的存取數(shù)據(jù)的技術(shù),但并沒有立即取消舊的技術(shù),ODBC工作起來仍然很有效,并同OLE DB和ADO緊密地一起工作著。事實(shí)上,ODBC并不只是微軟的產(chǎn)品,也受到國際組件的控制。并且由于廣泛的使用,ODBC也不會(huì)突然消亡。隱藏在OLE DB背后的思想不是摒棄現(xiàn)有的技術(shù),而是不斷地改進(jìn)它們。
8.1.1 OLE DB和ADO的體系結(jié)構(gòu)
前面已經(jīng)給出了OLE DB與ADO在一些主要方面的簡要解釋。圖8-1顯示了這兩項(xiàng)技術(shù)與應(yīng)用程序和數(shù)據(jù)存儲(chǔ)相互關(guān)系:
圖8-1 OLE DB、ADO與應(yīng)用程序和數(shù)據(jù)存儲(chǔ)的關(guān)系
從圖8-1中可以看出整體思路。圖的頂端是應(yīng)用程序(Web或常規(guī)的應(yīng)用程序,這是無關(guān)緊要的),下面是提供對數(shù)據(jù)的訪問的ADO和/或OLE DB。ADO和OLE DB兩者兼有是因?yàn)镺LE DB是一項(xiàng)基本技術(shù)。然而,OLE DB并不適用于所有語言,所以ADO位于OLE DB的上層,為那些不能直接訪問OLE DB的語言(如Visual Basic和腳本語言)提供編程接口。ADO提供了比OLE DB更容易的編程接口,因此即使那些可以直接使用OLE DB的編程語言,如C 或Java,也可使用ADO以簡化對數(shù)據(jù)的訪問。
圖8-1顯示的是微軟的編程語言,而ADO是一個(gè)COM組件,因此可用于任何與COM兼容的編程語言,比如Delphi或支持Active Scripting接口的腳本語言。所以,雖然ADO與平臺(tái)有關(guān),但與開發(fā)的語言是無關(guān)的。當(dāng)然,對于ASP主要使用VBScript和JScript,在組件中使用ADO時(shí),有一些Visual Basic代碼。
現(xiàn)在知道了OLE DB和ADO允許訪問數(shù)據(jù),可是為什么需要它們?老方法出問題了嗎?這里有兩個(gè)主要原因:
首先,OLE DB和ADO是用來訪問數(shù)據(jù)存儲(chǔ)的。注意這里指“數(shù)據(jù)存儲(chǔ)”而不是“數(shù)據(jù)庫”。盡管數(shù)據(jù)庫仍舊是數(shù)據(jù)存儲(chǔ)最為廣泛的形式,但并不一定含有全部的數(shù)據(jù)。一些消息系統(tǒng),如Microsoft Exchange Server,也普遍地用于存儲(chǔ)數(shù)據(jù)。目錄服務(wù)(Directory Service)正開始在初露端倪,它們包含著有關(guān)用戶、機(jī)器等的數(shù)據(jù);Web服務(wù)器中存有大量的信息?梢岳^續(xù)羅列下去,很明顯需要一種能訪問所有這些不同類型數(shù)據(jù)的方法。
其次,源于Internet應(yīng)用程序的興起與Web的狀態(tài)本質(zhì)。過去的訪問數(shù)據(jù)的方法主要考慮與數(shù)據(jù)存儲(chǔ)保持永久連接的情況下處理數(shù)據(jù)。而OLE DB和ADO正是為解決這個(gè)問題而設(shè)計(jì)的,提供斷開連接的記錄集,我們將會(huì)在后面看到有關(guān)這方面的內(nèi)容。
8.1.2 消費(fèi)者與提供者
ADO系統(tǒng)結(jié)構(gòu)圖展示了ADO是如何在應(yīng)用程序和真實(shí)數(shù)據(jù)存儲(chǔ)之間發(fā)揮作用的。在微軟的文獻(xiàn)中,會(huì)看到兩個(gè)易懂的術(shù)語:消費(fèi)者(Consumer)和提供者(Provider),但搞清它們的確切定義至關(guān)重要。
提供者是提供數(shù)據(jù)的物體,消費(fèi)者是使用(消耗)這些數(shù)據(jù)的物體。
在編程中,經(jīng)常會(huì)發(fā)現(xiàn)應(yīng)用程序是數(shù)據(jù)的消費(fèi)者。但提供者呢?一般是數(shù)據(jù)存儲(chǔ),并且由于OLE DB被設(shè)計(jì)成用于與不同的數(shù)據(jù)存儲(chǔ)對話,因此對于每一個(gè)獨(dú)特類型的數(shù)據(jù)存儲(chǔ)都有一個(gè)OLE DB提供者。
這種單獨(dú)提供者的思想并不新,但使編程變得容易了。編寫程序與ADO或OLE DB對話,OLE DB再與提供者對話。這意味著只需學(xué)會(huì)一套訪問數(shù)據(jù)的方法,無論數(shù)據(jù)如何存儲(chǔ),在某些情況下確實(shí)可以完全不改變?nèi)魏未a而只更換提供者。這就是ADO和OLE DB真正優(yōu)越的地方,為數(shù)據(jù)存儲(chǔ)提供了一套常用的編程接口。
要連接到數(shù)據(jù)存儲(chǔ),必須使用OLE DB提供者。提供給ADO 2.5的初始設(shè)置為:
· Jet OLE DB 4.0:用于微軟Access數(shù)據(jù)庫。
· DTS Packages:用于SQL Server的數(shù)據(jù)轉(zhuǎn)換服務(wù)(Data Transformation Services)。
· Internet Publishing:用于訪問Web服務(wù)器。
· Indexing Services:用于索引目錄(Index Catalogs)。
· Site Server Search:用于站點(diǎn)服務(wù)器查找目錄。
· ODBC Drivers:用于ODBC數(shù)據(jù)源。
· OLAP Services:用于微軟OLAP服務(wù)器。
· Oracle:用于Oracle數(shù)據(jù)庫。
· SQL Server:用于微軟SQL Server數(shù)據(jù)庫。
· Simple Provider:用于簡單的文本文件。
· MSDataShape:用于層次數(shù)據(jù)。
· Microsoft Directory Services:用于Windows 2000的目錄服務(wù)。
· DTS Flat File:用于SQL Server的數(shù)據(jù)轉(zhuǎn)換服務(wù)的平面文件管理。
這只是微軟提供的初始列表,并取決于安裝在服務(wù)器上的服務(wù)及軟件。以O(shè)racle數(shù)據(jù)提供者為例,要求在客戶機(jī)上安裝Oracle的客戶端軟件。
可以從別的制造商那里獲得OLE DB提供者,用于其他數(shù)據(jù)存儲(chǔ)。甚至還可以編寫
分享:WebClass入門(1)1.WebClass 簡介: WebClass 是一個(gè)VB組件,駐留在WEB SERVER 上,并對瀏覽器的輸入做出響應(yīng)。 對用戶來說,一個(gè) IIS 應(yīng)用程序好象是由一系列的HTML頁面組成。對開發(fā)者來說, 一個(gè) IIS 應(yīng)用程
相關(guān)ASP教程:
- asp FSO 讀寫文件本文件實(shí)現(xiàn)代碼
- asp中isNull、isEmpty和空字符串的區(qū)別
- asp獲取用戶真實(shí)IP地址的方法
- asp連接sqlserver數(shù)據(jù)庫實(shí)現(xiàn)代碼
- asp中正則表達(dá)式過濾html代碼函數(shù)
- asp中g(shù)et post提交表單區(qū)別
- 網(wǎng)頁模板:ASP內(nèi)建對象Request
- xmlhttp的open方法使用詳解
- ASP的常用的自定義函數(shù)大全
- asp中用for循環(huán)的一個(gè)小技巧
- eWebEditor v3.8 列目錄
- ASP無組件分頁實(shí)現(xiàn)思路及代碼
- 相關(guān)鏈接:
- 教程說明:
ASP教程-ASP 3.0高級(jí)編程(三十六)。