明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

常用的數(shù)據(jù)庫(kù)訪問(wèn)方式

[摘要]ASP訪問(wèn)數(shù)據(jù)庫(kù)的方式有哪些? 在ASP中可以通過(guò)三種方式訪問(wèn)數(shù)據(jù)庫(kù): 1、IDC(Internet Database Connector)方式; 2、ADO(ActiveX Data Objects)方式; 3、RDS(Remote Data Service)方式。 這三種訪問(wèn)方式對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)...

ASP訪問(wèn)數(shù)據(jù)庫(kù)的方式有哪些?

在ASP中可以通過(guò)三種方式訪問(wèn)數(shù)據(jù)庫(kù):
1、IDC(Internet Database Connector)方式;
2、ADO(ActiveX Data Objects)方式;
3、RDS(Remote Data Service)方式。
這三種訪問(wèn)方式對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)都是由Internet Information Server完成的。通過(guò)Web瀏覽器用HTTP協(xié)議向IIS(Internet信息服務(wù)器)發(fā)送請(qǐng)求,IIS執(zhí)行對(duì)數(shù)據(jù)庫(kù)的訪問(wèn),并返回一個(gè)HTML格式的文檔響應(yīng)。下面分別說(shuō)明:
1、IDC(Internet數(shù)據(jù)庫(kù)接口)
IDC是一個(gè)傳統(tǒng)的數(shù)據(jù)庫(kù)查詢工具,用來(lái)定義和執(zhí)行數(shù)據(jù)庫(kù)查詢的SQL命令,并向?yàn)g覽器返回一個(gè)指定數(shù)據(jù)格式的頁(yè)面。使用IDC訪問(wèn)數(shù)據(jù)庫(kù)最大的特點(diǎn)是簡(jiǎn)單,幾乎不需要編程就能實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。
IDC使用兩種文件來(lái)控制如何訪問(wèn)數(shù)據(jù)庫(kù)以及如何創(chuàng)建返回的Web頁(yè)面:IDC (.idc)文件和HTML擴(kuò)展(.htx)文件。.idc文件必須包括ODBC數(shù)據(jù)源(Datasource)、HTML擴(kuò)展文件的文件名(Template)以及要執(zhí)行的SQL語(yǔ)句(SQLStatement)。此外還有許多可選字段,可以根據(jù)需要選用。
.htx文件是帶有用<%%>或<!--%%-->括起來(lái)的附加標(biāo)記的HTML文檔,IDC用這些標(biāo)記將動(dòng)態(tài)數(shù)據(jù)添加到文檔中。在.htx文件中有六個(gè)關(guān)鍵字(begindetail、enddetail、if、else、endif和"%z"),用來(lái)控制數(shù)據(jù)庫(kù)中的數(shù)據(jù)怎樣和.htx文件中HTML格式進(jìn)行合并。數(shù)據(jù)庫(kù)列名說(shuō)明HTML文檔中什么數(shù)據(jù)被返回。
要執(zhí)行IDC查詢,通常的做法是在HTML文件中嵌入一個(gè).idc文件的連接。例如,我們可用下面的HTML語(yǔ)句向Web服務(wù)器發(fā)出請(qǐng)求,要求執(zhí)行idctest.idc文件:
<A HREF="http://LocalHost/idctest/idctest/idctest.idc">查詢</A>
當(dāng)Web服務(wù)器接到請(qǐng)求后,就調(diào)用Httpodbc.dll(IDC),與一定的數(shù)據(jù)源相連并把SQL命令傳給數(shù)據(jù)庫(kù)。當(dāng)SQL語(yǔ)句被執(zhí)行后,IDC把返回的數(shù)據(jù)融入到.htx文件中。IDC再把這個(gè)文檔返回給Web服務(wù)器,Web服務(wù)器再返回給瀏覽器。

2、ADO(ActiveX數(shù)據(jù)對(duì)象)
ADO訪問(wèn)數(shù)據(jù)庫(kù),更像編寫數(shù)據(jù)庫(kù)應(yīng)用程序。它把絕大部分的數(shù)據(jù)庫(kù)操作封裝在七個(gè)對(duì)象中,在ASP頁(yè)面中編程調(diào)用這些對(duì)象執(zhí)行相應(yīng)的數(shù)據(jù)庫(kù)操作。
ADO是ASP技術(shù)的核心之一,它集中體現(xiàn)了ASP技術(shù)豐富而靈活的數(shù)據(jù)庫(kù)訪問(wèn)功能。ADO建立了基于Web方式訪問(wèn)數(shù)據(jù)庫(kù)的腳本編寫模型,不僅支持任何大型數(shù)據(jù)庫(kù)的核心功能,而且支持許多數(shù)據(jù)庫(kù)所專有的特性。
ADO使用本機(jī)數(shù)據(jù)源,通過(guò)ODBC訪問(wèn)數(shù)據(jù)庫(kù)。這些數(shù)據(jù)庫(kù)可以是關(guān)系型數(shù)據(jù)庫(kù)、文本型數(shù)據(jù)庫(kù)、層次型數(shù)據(jù)庫(kù)或者任何支持ODBC的數(shù)據(jù)庫(kù)。主要優(yōu)點(diǎn)是易用、高速、占用內(nèi)存和磁盤空間少,所以非常適合于作為服務(wù)器端的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)。相對(duì)于訪問(wèn)數(shù)據(jù)庫(kù)的CGI程序而言,它是多線程的,在出現(xiàn)大量并發(fā)請(qǐng)求時(shí),也同樣可以保持服務(wù)器的運(yùn)行效率,并且通過(guò)連接池(Connection Pool)技術(shù)以及對(duì)數(shù)據(jù)庫(kù)連接資源的完全控制,提供與遠(yuǎn)程數(shù)據(jù)庫(kù)的高效連接與訪問(wèn),同時(shí)它還支持事務(wù)處理(Transaction),以開(kāi)發(fā)高效率、高可靠性的數(shù)據(jù)庫(kù)應(yīng)用程序。
一般使用ADO訪問(wèn)數(shù)據(jù)庫(kù)的ASP腳本程序應(yīng)該使用Connection對(duì)象建立并管理與遠(yuǎn)程數(shù)據(jù)庫(kù)的連接,用Command對(duì)象提供靈活的查詢,用Recordset對(duì)象訪問(wèn)數(shù)據(jù)庫(kù)查詢所返回的結(jié)果。這三者是ADO的最核心的對(duì)象。
與IDC一樣,運(yùn)行該數(shù)據(jù)庫(kù)訪問(wèn)腳本的通常做法是在HTML文件中嵌入一個(gè).asp文件的連接。如,用HTML語(yǔ)句向Web服務(wù)器發(fā)出請(qǐng)求,要求執(zhí)行intels.asp文件:
<A HREF="http://LocalHost/idctest/ado/intels.asp">查詢</A>

3、RDS(遠(yuǎn)程數(shù)據(jù)服務(wù))
RDS在IIS 4.0中,與ADO集成到一起,使用同樣的編程模型,提供訪問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù)的功能。ADO雖然能夠提供非常強(qiáng)大的數(shù)據(jù)庫(kù)訪問(wèn)功能,但是它不支持?jǐn)?shù)據(jù)遠(yuǎn)程操作(Data Remoting)。它只能執(zhí)行查詢并返回?cái)?shù)據(jù)庫(kù)查詢的結(jié)果,這種結(jié)果是靜態(tài)的,服務(wù)器上的數(shù)據(jù)庫(kù)與客戶端看到的數(shù)據(jù)沒(méi)有活的連接關(guān)系。如果用戶端需要修改數(shù)據(jù)庫(kù),就必須構(gòu)造修改數(shù)據(jù)的SQL語(yǔ)句,并執(zhí)行相應(yīng)的查詢。而RDS支持?jǐn)?shù)據(jù)遠(yuǎn)程操作。它不僅能執(zhí)行查詢并返回?cái)?shù)據(jù)庫(kù)查詢結(jié)果,而且可以把服務(wù)器端的數(shù)據(jù)“搬到”用戶端修改,并調(diào)用一個(gè)數(shù)據(jù)庫(kù)更新命令,將用戶端修改的數(shù)據(jù)寫回?cái)?shù)據(jù)庫(kù),象使用本地?cái)?shù)據(jù)庫(kù)一樣。
RDS的底層是調(diào)用ADO來(lái)完成的,同樣具有ADO的易用性,區(qū)別僅在于RDS需要與數(shù)據(jù)綁定控件一同使用,比如Sheridan的ActiveX DataBound Grid控件。正如ADO類似于VB中的RDO一樣,RDS也類似于VB中的遠(yuǎn)程數(shù)據(jù)控件(RDC)。
RDS在ADO的基礎(chǔ)上通過(guò)綁定的數(shù)據(jù)顯示和操作控件,提供給客戶端更強(qiáng)的數(shù)據(jù)表現(xiàn)力和遠(yuǎn)程數(shù)據(jù)操縱功能?梢哉f(shuō)RDS是目前基于Web的最好的遠(yuǎn)程數(shù)據(jù)庫(kù)訪問(wèn)方式。