當你用 ASP 編寫(xiě)服務(wù)器端應用程序時(shí),必須依靠 ActiveX 組件來(lái)強大 Web 應用程序的功能,譬如:你需要連接數據庫,對數據庫進(jìn)行在線(xiàn)操作等等,繼上篇介紹了 AD Rotator 組件后,本篇將接著(zhù)給大家介紹其它一些常用的 ASP ActiveX 組件的使用方法。
最近仍有不少朋友來(lái)信問(wèn)我, ASP 是否只能在 Microsoft IIS 上運行,是否可以在非 NT 平臺上運作?本來(lái)這個(gè)問(wèn)題我已經(jīng)回答過(guò)很多遍了 : 我只是聽(tīng)說(shuō)過(guò)有某種可以支持的軟件,卻從沒(méi)見(jiàn)過(guò)。但一些熱情的朋友仍然孜孜不倦地來(lái)信詢(xún)問(wèn),于是在朋友們的盛情之下,我訪(fǎng)遍了 ASP 相關(guān)站點(diǎn),竟驚奇的發(fā)現,原來(lái) ASP 的確是可以運行在其它非 NT 平臺上的,因此在本篇的開(kāi)頭,我就給來(lái)信的朋友們簡(jiǎn)要介紹一下如何在非 NT 平臺上使用 ASP。
要在非 NT 平臺上開(kāi)發(fā)并運行 ASP 應用程序我們可以依賴(lài)于一套名為 Instant ASP 的第三方軟件,它的廣告標語(yǔ)非常吸引人“ASP Anytime, Anywhere”,我想所有 ASP 的開(kāi)發(fā)者們看到如此的標語(yǔ)必然興奮不已。這套由 Halcyon 軟件公司開(kāi)發(fā)的軟件使得你無(wú)需重復開(kāi)發(fā)原有 ASP 應用程序即可以將它運行在任何操作平臺上 ! 這樣非但節省了大量的開(kāi)發(fā)時(shí)間,而且使得 ASP 真正成為了一種跨平臺的 Internet、 Intranet 或 Extranet 應用程序。 Instant ASP 本身其實(shí)是一套基于 Java 的應用程序,因此通過(guò)它你可以將基于 WEB 的 ASP 應用程序運行在任何平臺上,下表列出了 Instant ASP 目前版本所支持的操作平臺。
更令人吃驚的是 Instant ASP 不僅提供了 ASP 的運作環(huán)境,而且它較目前市場(chǎng)上的 ASP 應用還提供了更為強大和實(shí)用的功能,它將 ActiveX 組件和 Enterprise Java Beans 或者 CORBA-compliant objects 組合起來(lái),從而使 ASP 有了更為廣泛的應用。它同樣提供了通過(guò) ADO 接口訪(fǎng)問(wèn)連接各種數據庫,并生成動(dòng)態(tài)頁(yè)面的強大功能。對于開(kāi)發(fā)者而言可以使用自己擅長(cháng)的編程語(yǔ)言或工具如 :Visual Basic, JScript, VBScript, C++, Java, HTML, Delphi , MS Visual InterDev 等等來(lái)進(jìn)行開(kāi)發(fā)。關(guān)于 Instant ASP 具體安裝和操作我就不在這里展開(kāi)了,有興趣的朋友可以到它的站點(diǎn)上去看看 halcyonsoft.com,你還可以免費下載一個(gè)試用版試試。
繼上一篇中作者給大家介紹了 AD Rotator 組件的使用方法后,今天我們接著(zhù)來(lái)看看其它的一些 ASP 常用組件。
一、 Database Access 組件
我們在 WEB 服務(wù)器上運用 WEB 應用程序進(jìn)行的最常見(jiàn)和最實(shí)用的任務(wù)就是訪(fǎng)問(wèn)服務(wù)器端的數據庫。而 ASP 內建的 Database Access 組件使得我們能夠輕而易舉地通過(guò) ActiveX Data Objects (ADO) 訪(fǎng)問(wèn)存儲在服務(wù)器端的數據庫或其他表格化數據結構中的信息。 ADO 是對當前微軟所支持的數據庫進(jìn)行操作的最有效和最簡(jiǎn)單直接的方法,它是一種功能強大的數據訪(fǎng)問(wèn)編程模式,從而使得大部分數據源可編程的屬性得以直接擴展到你的 Active Server 頁(yè)面上??梢允褂?ADO 去編寫(xiě)緊湊簡(jiǎn)明的腳本以便連接到 Open Database Connectivity (ODBC) 兼容的數據庫和 OLE DB 兼容的數據源,這樣 ASP 程序員就可以訪(fǎng)問(wèn)任何與 ODBC 兼容的數據庫,包括 MS SQL SERVER、 Access、 Oracle 等等。如果您是一個(gè)對數據庫連接有一定了解的腳本編寫(xiě)人員,那么您將發(fā)現 ADO 命令語(yǔ)句并不復雜而且容易掌握。同樣地,如果您是一個(gè)經(jīng)驗豐富的數據庫編程人員,您將會(huì )正確認識 ADO 的先進(jìn)的與語(yǔ)言無(wú)關(guān)性和查詢(xún)處理功能。熟悉 VB 數據庫編程的朋友會(huì )發(fā)現 ADO 與 RDO (Remote Data Objects) 有某種類(lèi)似的地方。但據說(shuō) ADO 的訪(fǎng)問(wèn)的速度更快,內存需要更小。
下面給大家簡(jiǎn)要介紹一下利用 ASP 的 Database Access 組件通過(guò) ADO 連接并操作 WEB 數據庫的步驟
第一步 : 指定想要連接的數據庫,有 DSN 和 DSN-less 兩種方法。
DSN(Data Source Name 數據源名稱(chēng) ): 建立一個(gè)系統數據源名稱(chēng),方法如下 :
1、單擊“開(kāi)始”,選設置控制面板。
2、雙擊圖標“32 位 ODBC” , 將彈出一個(gè)對話(huà)框,選標簽“System DSN”
3、單擊“Add”添加一個(gè) DSN 入口 , 選擇如“Microsoft Access Drive”并確認。
4、在“Data Source Name”欄里輸入你希望指定的 DSN, 然后單擊“Select”選擇數據庫存放位置,你可以按“Browse”來(lái)選取。
5、以上步驟完成后在 ASP 程序中指定 DSN,如下 :
< %connstr = "DSN"%>
DSN-less: 是另一種通過(guò)在 ASP 文件里直接指定數據庫文件所在位置,而無(wú)需建立 DSN 的方法。由于許多公司沒(méi)有自己的 WEB 服務(wù)器,他們的網(wǎng)站往往是存放在遠端的虛擬服務(wù)器上,因此要建立和修改 DSN 的設置比較麻煩。而使用 DSN-less 方法直接指定遠端數據庫所在位置恰恰解決了這一問(wèn)題,方法如下 :
< % 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;" %>
在指定了想要連接的數據庫后,就可以通過(guò)以下方法連接并打開(kāi)數據庫 :
< % Set Conn = Server.CreateObject("ADODB.Connection")Conn.Open constr %>
第二步 : 指定想要執行的 SQL 指令,可以使用 RecordSet。
當連接了數據庫后就可以對數據庫進(jìn)行操作,比如查詢(xún)、刪除、更新等等,這些操作都是通過(guò) SQL 指令來(lái)完成的,如下例在數據庫表 datebase 中查詢(xún)所有姓名中有“A”的記錄 :
< % sql="select * from datebase where name like 'A%%'" Set rs = Conn.Execute(sql) %>
盡管 Connection 對象簡(jiǎn)化了連接數據庫和查詢(xún)任務(wù),但 Connection 對象仍有許多不足。確切地說(shuō),檢索和顯示數據庫信息的 Connection 對象不能用于創(chuàng )建腳本,您必須確切知道要對數據庫作出的更改,然后才能使用查詢(xún)實(shí)現更改。對于檢索數據、檢查結果、更改數據庫, ADO 提供了 Recordset 對象。正如它的名稱(chēng)所暗示的那樣, Recordset 對象有許多您可以使用的特性,根據您的查詢(xún)限制,檢索并且顯示一組數據庫行,即記錄。 Recordset 對象保持查詢(xún)返回的記錄的位置,允許您一次一項逐步掃描結果。根據 Recordset 對象的指針類(lèi)型屬性設置,您可以滾動(dòng)和更新記錄。數據庫指針可以讓您在一組記錄中定位到特定的項。指針還用于檢索和檢查記錄,然后在這些記錄的基礎上執行操作。
Recordset 對象有一些屬性,可用于精確地控制指針的行為,提高您檢查和更新結果的能力。
Recordset 的使用方法如下 :
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL 指令 , Conn, 1, 1 ' 讀取
或
rs.Open SQL 指令 , Conn, 1, 3 ' 新增、修改、或刪除
第三步 : 使用 RecordSet 屬性和方法,并顯示執行的結果。
通過(guò)以上指令,我們創(chuàng )建了一個(gè)包含數據的游標 (RecordSet)“rs”,事實(shí)上游標是存儲在活動(dòng)內存中的類(lèi)似記錄和字段的數組的東西,當通過(guò) RecordSet 組件創(chuàng )建一個(gè)游標時(shí),它從數據提供者的得到一個(gè)數據集,并用它來(lái)充實(shí)游標,我們可以想象 ADO 產(chǎn)生的 RecordSet 是一個(gè)象電子表格的記錄,它有一行行的記錄,在任何時(shí)候都有一行是它的當前行,而 RecordSet 的字段是用 RecordSet 的 Field 集合表示的。下面列出了所創(chuàng )建的 RecordSet 對象 ( 游標 ) 的一些屬性和方法 :
rs.Fields.Count: RecordSet 對象的字段總數。
rs(i).Name: 第 i 個(gè)字段的名稱(chēng), i 由 0 算起到 rs.Fields.Count-1。
rs(i): 讀取第 i 個(gè)字段的數據, i 由 0 算起到 rs.Fields.Count-1。
rs(" 字段名稱(chēng) "): 讀取指定字段的數據。
rs.RecordCount: 游標中的數據記錄總數。
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)的頁(yè)面的話(huà), Content Linking 組件將非常適合你的需求,它非但可以使你在這些頁(yè)面中建立一個(gè)目錄表,而且還可以在它們中間建立動(dòng)態(tài)連接,并自動(dòng)生成和更新目錄表及先前和后續的 Web 頁(yè)的導航鏈接。這對于列出聯(lián)機報刊、電子讀物網(wǎng)站以及論壇郵件是十分理想的選擇。
Content Linking 組件創(chuàng )建管理 URL 列表的 Nextlink 對象,要使用 Content Linking 組件,必須需要先創(chuàng )建 Content Linking List 文件。 Content Linking 組件正是通過(guò)讀取這個(gè)文件來(lái)獲得處理我們希望鏈接的所有頁(yè)面的信息。事實(shí)上該文件是一個(gè)純文本文件,其內容如下 :
page1.htm one page2.htm two page3.htm three page4.htm four page5.htm five page6.htm six
這個(gè)文本文件的每行有如下形式 :
url description comment
其中, URL 是與頁(yè)面相關(guān)的超鏈地址, description 提供了能被超鏈使用的文本信息, comment 則包含了不被 Content Linking 組件解釋的注釋信息,它的作用如同程序中的注釋。 description 和 comment 參數是可選的。 下面我們來(lái)看看如何具體使用 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", ) %>
< /a>
< % Next %>
文章來(lái)自: ASP技術(shù)網(wǎng)站(
www.aspjs.net) 詳文參考:
http://www.aspjs.net/aspjs1html/ASPjiaocheng/ASPjishuziliao/60.html