明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

常用的 ASP ActiveX 組件

[摘要]當你用 ASP 編寫服務(wù)器端應(yīng)用程序時,必須依靠 ActiveX 組件來強大 Web 應(yīng)用程序的功能,譬如:你需要連接數(shù)據(jù)庫,對數(shù)據(jù)庫進行在線操作等等,繼上篇介紹了 AD Rotator 組件后,本篇將接著給大家介紹其它一些常用的 ASP ActiveX 組件的使用方法。 最近仍有不少朋友來信問我...

當你用 ASP 編寫服務(wù)器端應(yīng)用程序時,必須依靠 ActiveX
組件來強大 Web
應(yīng)用程序的功能,譬如:你需要連接數(shù)據(jù)庫,對數(shù)據(jù)庫進行在線操作等等,繼上篇介紹了
AD Rotator 組件后,本篇將接著給大家介紹其它一些常用的 ASP ActiveX
組件的使用方法。


最近仍有不少朋友來信問我, ASP 是否只能在 Microsoft IIS
上運行,是否可以在非 NT
平臺上運作?本來這個問題我已經(jīng)回答過很多遍了 :
我只是聽說過有某種可以支持的軟件,卻從沒見過。但一些熱情的朋友仍然孜孜不倦地來信詢問,于是在朋友們的盛情之下,我訪遍了
ASP 相關(guān)站點,竟驚奇的發(fā)現(xiàn),原來 ASP 的確是可以運行在其它非 NT
平臺上的,因此在本篇的開頭,我就給來信的朋友們簡要介紹一下如何在非
NT 平臺上使用 ASP。


要在非 NT 平臺上開發(fā)并運行 ASP
應(yīng)用程序我們可以依賴于一套名為 Instant ASP
的第三方軟件,它的廣告標語非常吸引人“ASP Anytime, Anywhere”,我想所有
ASP 的開發(fā)者們看到如此的標語必然興奮不已。這套由 Halcyon
軟件公司開發(fā)的軟件使得你無需重復開發(fā)原有 ASP
應(yīng)用程序即可以將它運行在任何操作平臺上 !
這樣非但節(jié)省了大量的開發(fā)時間,而且使得 ASP
真正成為了一種跨平臺的 Internet、 Intranet 或 Extranet 應(yīng)用程序。
Instant ASP 本身其實是一套基于 Java
的應(yīng)用程序,因此通過它你可以將基于 WEB 的 ASP
應(yīng)用程序運行在任何平臺上,下表列出了 Instant ASP
目前版本所支持的操作平臺。





更令人吃驚的是 Instant ASP 不僅提供了 ASP
的運作環(huán)境,而且它較目前市場上的 ASP
應(yīng)用還提供了更為強大和實用的功能,它將 ActiveX 組件和 Enterprise
Java Beans 或者 CORBA-compliant objects 組合起來,從而使 ASP
有了更為廣泛的應(yīng)用。它同樣提供了通過 ADO
接口訪問連接各種數(shù)據(jù)庫,并生成動態(tài)頁面的強大功能。對于開發(fā)者而言可以使用自己擅長的編程語言或工具如
:Visual Basic, Jscript, VBScript, C++, Java, HTML, Delphi , MS Visual InterDev
等等來進行開發(fā)。關(guān)于 Instant ASP
具體安裝和操作我就不在這里展開了,有興趣的朋友可以到它的站點上去看看
halcyonsoft.com,你還可以免費下載一個試用版試試。



繼上一篇中作者給大家介紹了 AD Rotator
組件的使用方法后,今天我們接著來看看其它的一些 ASP 常用組件。



一、 Database Access 組件



我們在 WEB 服務(wù)器上運用 WEB
應(yīng)用程序進行的最常見和最實用的任務(wù)就是訪問服務(wù)器端的數(shù)據(jù)庫。而
ASP 內(nèi)建的 Database Access 組件使得我們能夠輕而易舉地通過 ActiveX Data
Objects (ADO)
訪問存儲在服務(wù)器端的數(shù)據(jù)庫或其他表格化數(shù)據(jù)結(jié)構(gòu)中的信息。 ADO
是對當前微軟所支持的數(shù)據(jù)庫進行操作的最有效和最簡單直接的方法,它是一種功能強大的數(shù)據(jù)訪問編程模式,從而使得大部分數(shù)據(jù)源可編程的屬性得以直接擴展到你的
Active Server 頁面上。可以使用 ADO 去編寫緊湊簡明的腳本以便連接到
Open Database Connectivity (ODBC) 兼容的數(shù)據(jù)庫和 OLE DB 兼容的數(shù)據(jù)源,這樣
ASP 程序員就可以訪問任何與 ODBC 兼容的數(shù)據(jù)庫,包括 MS SQL SERVER、Access、Oracle
等等。如果您是一個對數(shù)據(jù)庫連接有一定了解的腳本編寫人員,那么您將發(fā)現(xiàn)
ADO
命令語句并不復雜而且容易掌握。同樣地,如果您是一個經(jīng)驗豐富的數(shù)據(jù)庫編程人員,您將會正確認識
ADO 的先進的與語言無關(guān)性和查詢處理功能。熟悉 VB
數(shù)據(jù)庫編程的朋友會發(fā)現(xiàn) ADO 與RDO (Remote Data Objects)
有某種類似的地方。但據(jù)說 ADO 的訪問的速度更快,內(nèi)存需要更小。



下面給大家簡要介紹一下利用 ASP 的 Database Access 組件通過 ADO
連接并操作 WEB 數(shù)據(jù)庫的步驟



第一步 : 指定想要連接的數(shù)據(jù)庫,有 DSN 和 DSN-less
兩種方法。



DSN(Data Source Name 數(shù)據(jù)源名稱 ):
建立一個系統(tǒng)數(shù)據(jù)源名稱,方法如下 :



1、單擊“開始”,選設(shè)置控制面板。



2、雙擊圖標“32 位 ODBC” , 將彈出一個對話框,選標簽“System
DSN”



3、單擊“Add”添加一個 DSN 入口 , 選擇如“Microsoft Access Drive”并確認。




4、在“Data Source Name”欄里輸入你希望指定的 DSN, 然后單擊“Select”選擇數(shù)據(jù)庫存放位置,你可以按“Browse”來選取。




5、以上步驟完成后在 ASP 程序中指定 DSN,如下 :



< %connstr = "DSN"%>



DSN-less: 是另一種通過在 ASP
文件里直接指定數(shù)據(jù)庫文件所在位置,而無需建立 DSN
的方法。由于許多公司沒有自己的 WEB
服務(wù)器,他們的網(wǎng)站往往是存放在遠端的虛擬服務(wù)器上,因此要建立和修改
DSN 的設(shè)置比較麻煩。而使用 DSN-less
方法直接指定遠端數(shù)據(jù)庫所在位置恰恰解決了這一問題,方法如下



:


< %

connstr =
"DBQ="+server.mappath("database/source.mdb")+";DefaultDir=;DRIVER={Microsoft
Access Driver (*.mdb)};DriverId=25;FIL=MS
Access;ImplicitCommitSync=Yes;MaxBufferSize=512;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UserCommitSync=Yes;"

%>






在指定了想要連接的數(shù)據(jù)庫后,就可以通過以下方法連接并打開數(shù)據(jù)庫
:



< %

Set Conn = Server.CreateObject("ADODB.Connection")Conn.Open constr

%>





第二步 : 指定想要執(zhí)行的 SQL 指令,可以使用 RecordSet。



當連接了數(shù)據(jù)庫后就可以對數(shù)據(jù)庫進行操作,比如查詢、刪除、更新等等,這些操作都是通過
SQL 指令來完成的,如下例在數(shù)據(jù)庫表 datebase 中查詢所有姓名中有“A”的記錄
:



< %

sql="select * from datebase where name like 'A%%'"

Set rs = Conn.Execute(sql)

%>



盡管 Connection 對象簡化了連接數(shù)據(jù)庫和查詢?nèi)蝿?wù),但 Connection
對象仍有許多不足。確切地說,檢索和顯示數(shù)據(jù)庫信息的 Connection
對象不能用于創(chuàng)建腳本,您必須確切知道要對數(shù)據(jù)庫作出的更改,然后才能使用查詢實現(xiàn)更改。對于檢索數(shù)據(jù)、檢查結(jié)果、更改數(shù)據(jù)庫,
ADO 提供了 Recordset 對象。正如它的名稱所暗示的那樣, Recordset
對象有許多您可以使用的特性,根據(jù)您的查詢限制,檢索并且顯示一組數(shù)據(jù)庫行,即記錄。
Recordset
對象保持查詢返回的記錄的位置,允許您一次一項逐步掃描結(jié)果。根據(jù)
Recordset
對象的指針類型屬性設(shè)置,您可以滾動和更新記錄。數(shù)據(jù)庫指針可以讓您在一組記錄中定位到特定的項。指針還用于檢索和檢查記錄,然后在這些記錄的基礎(chǔ)上執(zhí)行操作。
Recordset
對象有一些屬性,可用于精確地控制指針的行為,提高您檢查和更新結(jié)果的能力。




Recordset 的使用方法如下 :



Set rs = Server.CreateObject("ADODB.Recordset")



rs.Open SQL 指令 , Conn, 1, 1 ' 讀取







rs.Open SQL 指令 , Conn, 1, 3 ' 新增、修改、或刪除



第三步 : 使用 RecordSet 屬性和方法,并顯示執(zhí)行的結(jié)果。



通過以上指令,我們創(chuàng)建了一個包含數(shù)據(jù)的游標 (RecordSet)“rs”,事實上游標是存儲在活動內(nèi)存中的類似記錄和字段的數(shù)組的東西,當通過
RecordSet
組件創(chuàng)建一個游標時,它從數(shù)據(jù)提供者的得到一個數(shù)據(jù)集,并用它來充實游標,我們可以想象
ADO 產(chǎn)生的 RecordSet
是一個象電子表格的記錄,它有一行行的記錄,在任何時候都有一行是它的當前行,而
RecordSet 的字段是用 RecordSet 的Field 集合表示的。下面列出了所創(chuàng)建的
RecordSet 對象 (游標 )的一些屬性和方法



:



rs.Fields.Count: RecordSet 對象的字段總數(shù)。



rs(I).Name: 第 I 個字段的名稱, I 由 0 算起到 rs.Fields.Count-1。



rs(I): 讀取第 I 個字段的數(shù)據(jù), I 由 0 算起到 rs.Fields.Count-1。



rs(" 字段名稱 "): 讀取指定字段的數(shù)據(jù)。



rs.RecordCount: 游標中的數(shù)據(jù)記錄總數(shù)。



rs.EOF: 是否已指到最后一條記錄。



rs.MoveNext: 將指標移到下一筆記錄。



rs.MovePrev: 將指標移到上一筆記錄。



rs.MoveFirst: 將指標移到第一筆記錄。



rs.MoveLast: 將指標移到最后一筆記錄。



rs.Close: 關(guān)閉 RecordSet 對象



有關(guān) ADO 的其他介紹,作者將在今后給大家詳細講解。



二、 Content Linking 組件



如果你的網(wǎng)站有一系列相互關(guān)聯(lián)的頁面的話, Content Linking
組件將非常適合你的需求,它非但可以使你在這些頁面中建立一個目錄表,而且還可以在它們中間建立動態(tài)連接,并自動生成和更新目錄表及先前和后續(xù)的
Web
頁的導航鏈接。這對于列出聯(lián)機報刊、電子讀物網(wǎng)站以及論壇郵件是十分理想的選擇。


Content Linking 組件創(chuàng)建管理 URL 列表的 Nextlink 對象,要使用 Content
Linking 組件,必須需要先創(chuàng)建 Content Linking List 文件。 Content Linking
組件正是通過讀取這個文件來獲得處理我們希望鏈接的所有頁面的信息。事實上該文件是一個純文本文件,其內(nèi)容如下
:

page1.htm one

page2.htm two

page3.htm three

page4.htm four

page5.htm five

page6.htm six





這個文本文件的每行有如下形式 :



url description comment



其中, URL 是與頁面相關(guān)的超鏈地址, description
提供了能被超鏈使用的文本信息, comment 則包含了不被 Content Linking
組件解釋的注釋信息,它的作用如同程序中的注釋。 Description 和
comment 參數(shù)是可選的。



下面我們來看看如何具體使用 Content Linking 組件 :



< html>

< head>

< meta http-equiv="Content-Type" content="text/html;
charset=gb2312">

< title> 網(wǎng)絡(luò)電子讀物寶藏 < /title>

< /head>

< body>

< p> 網(wǎng)絡(luò)電子讀物導航

< %

Set Link = Server.CreateObject("MSWC.NextLink")

count = Link.GetListCount("nextlink.txt")

Dim I

For I=1 to count

%>

< ul>< li>< a href="< %= Link.GetNthURL("nextlink.txt",
I) %>">< %= Link.GetNthDescription("nextlink.txt", I) %><
/a>

< % Next %>

< /body>

< /html>





在以上代碼中,我們先用 GetListCount 方法確定在文件
nextlink.txt 中有多少條項目,然后利用循環(huán)語句,并使用 GetNthURL、
GetNthDescription 方法逐一將存儲在 nextlink.txt
文件中的內(nèi)容讀出并顯示給客戶端瀏覽器。



下面列出了 Content Linking 組件所有可使用的方法
GetListCount(file) 統(tǒng)計內(nèi)容鏈接列表文件中鏈接的項目數(shù)。



GetNextURL(file) 獲取內(nèi)容鏈接列表文件中所列的下一頁的 URL。



GetPreviousDescription(file)
獲取內(nèi)容鏈接列表文件中所列的上一頁的說明行。



GetListIndex(file) 獲取內(nèi)容鏈接列表文件中當前頁的索引。



GetNthDescription(file,index) 獲取內(nèi)容鏈接列表文件中所列的第 N
頁的說明。



GetPreviousUR(file) 獲取內(nèi)容鏈接列表文件中所列的上一頁的 URL。




GetNextDescription(file)
獲取內(nèi)容鏈接列表文件中所列的下一頁的說明。



GetNthURL(file,index) 獲取內(nèi)容鏈接列表文件中所列的第 N
頁的說明。



在我們創(chuàng)建了網(wǎng)站的總導航頁面后,我們當然還希望在每一頁中添加一個“上一頁”、“下一頁”的導航超鏈,下面我們就來看看如何實現(xiàn)導航超鏈。


由于考慮到你的網(wǎng)站可能包含了上千或更多的頁面,所以我們不可能在每一個頁面中都編寫實現(xiàn)導航超鏈的
ASP 代碼。因此,我們必須利用前幾篇中所學到的服務(wù)器端包容 SSI,這樣就避免了大量的重復作業(yè),請看下例
:



< !--#include file="nextprev.inc"-->



只要將這端代碼放在每個頁面中即可。 Nextprev.inc
文件的內(nèi)容如下 :



< %

Set Link = Server.CreateObject("MSWC.NextLink")

count = Link.GetListCount("nextlink.txt")

current = link.GetListIndex("nextlink.txt")

If current > 1 Then

%>

< a href="< %= Link.GetPreviousURL("nextlink.txt") %>">
上一頁 < /a>

< %

End If

If current < count Then

%>

< a href="< %= Link.GetNextURL("nextlink.txt") %>">
下一頁 < /a>

< % End If %>


今天的學習又到此結(jié)束了,在這里我要再次感謝所有關(guān)心我的文章的朋友們,你們的來信給了我很大的鼓舞,不過請大家不要再稱我為“老師”,其實我也和你們一樣是在不斷的學習和摸索中,有問題我們可以一起探討,我的文章中肯定還存在很多不足或漏洞,也希望大家發(fā)現(xiàn)后能及時向我提出。由于近來
ASP
已經(jīng)在國內(nèi)的網(wǎng)站中廣泛運用起來,所以應(yīng)朋友們的要求,在國內(nèi)
ASP 高手飛鳥的熱情幫助下,我決定寫一些 ASP
應(yīng)用實例作為現(xiàn)在這篇文章的姊妹篇,這樣也就可以為大家提供一些真正實用的東西了,敬請關(guān)注。(出處:熱點網(wǎng)絡(luò))