當(dāng)前位置: 首頁IT技術(shù) → 一些常用ASP ActiveX 組件使用方法的介紹

一些常用ASP ActiveX 組件使用方法的介紹

更多

這篇文章將給大家介紹一些常用ASP ActiveX 組件使用方法,希望能幫助到大家。

當(dāng)你用 ASP 編寫服務(wù)器端應(yīng)用程序時(shí),必須依靠 ActiveX 組件來強(qiáng)大 Web 應(yīng)用程序的功能,譬如:你需要連接數(shù)據(jù)庫,對(duì)數(shù)據(jù)庫進(jìn)行在線操作等等,

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

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

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

    今天我們接著來看看其它的一些 ASP 常用組件。

  一、 Database Access 組件

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

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

  第一步 : 指定想要連接的數(shù)據(jù)庫,有 DSN 和 DSN-less 兩種方法。
  DSN(Data Source Name 數(shù)據(jù)源名稱 ): 建立一個(gè)系統(tǒng)數(shù)據(jù)源名稱,方法如下 :
  1、單擊“開始”,選設(shè)置控制面板。
  2、雙擊圖標(biāo)“32 位 ODBC” , 將彈出一個(gè)對(duì)話框,選標(biāo)簽“System DSN”
  3、單擊“Add”添加一個(gè) DSN 入口 , 選擇如“Microsoft Access Drive”并確認(rèn)。
  4、在“Data Source Name”欄里輸入你希望指定的 DSN, 然后單擊“Select”選擇數(shù)據(jù)庫存放位置,你可以按“Browse”來選取。
  5、以上步驟完成后在 ASP 程序中指定 DSN,如下 :

  < % connstr = "DSN"%>

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

  < % connstr = "DSN"%>

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

  <%
  connstr="DBQ="+server.mappath("database/source.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
  %>

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

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

  第二步 : 指定想要執(zhí)行的 SQL 指令,可以使用 RecordSet。
  當(dāng)連接了數(shù)據(jù)庫后就可以對(duì)數(shù)據(jù)庫進(jìn)行操作,比如查詢、刪除、更新等等,這些操作都是通過 SQL 指令來完成的,如下例在數(shù)據(jù)庫表 datebase 中查詢所有姓名中有“A”的記錄 :

  < %
  sql="select * from datebase where name like "A%%""
  Set rs = Conn.Execute(sql)
  %>

    盡管 Connection 對(duì)象簡(jiǎn)化了連接數(shù)據(jù)庫和查詢?nèi)蝿?wù),但 Connection 對(duì)象仍有許多不足。確切地說,檢索和顯示數(shù)據(jù)庫信息的 Connection 對(duì)象不能用于創(chuàng)建腳本,您必須確切知道要對(duì)數(shù)據(jù)庫作出的更改,然后才能使用查詢實(shí)現(xiàn)更改。對(duì)于檢索數(shù)據(jù)、檢查結(jié)果、更改數(shù)據(jù)庫, ADO 提供了 Recordset 對(duì)象。正如它的名稱所暗示的那樣, Recordset 對(duì)象有許多您可以使用的特性,根據(jù)您的查詢限制,檢索并且顯示一組數(shù)據(jù)庫行,即記錄。 Recordset 對(duì)象保持查詢返回的記錄的位置,允許您一次一項(xiàng)逐步掃描結(jié)果。根據(jù) Recordset 對(duì)象的指針類型屬性設(shè)置,您可以滾動(dòng)和更新記錄。數(shù)據(jù)庫指針可以讓您在一組記錄中定位到特定的項(xiàng)。指針還用于檢索和檢查記錄,然后在這些記錄的基礎(chǔ)上執(zhí)行操作。 Recordset 對(duì)象有一些屬性,可用于精確地控制指針的行為,提高您檢查和更新結(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)建了一個(gè)包含數(shù)據(jù)的游標(biāo) (RecordSet)“rs”,事實(shí)上游標(biāo)是存儲(chǔ)在活動(dòng)內(nèi)存中的類似記錄和字段的數(shù)組的東西,當(dāng)通過 RecordSet 組件創(chuàng)建一個(gè)游標(biāo)時(shí),它從數(shù)據(jù)提供者的得到一個(gè)數(shù)據(jù)集,并用它來充實(shí)游標(biāo),我們可以想象 ADO 產(chǎn)生的 RecordSet 是一個(gè)象電子表格的記錄,它有一行行的記錄,在任何時(shí)候都有一行是它的當(dāng)前行,而 RecordSet 的字段是用 RecordSet 的 Field 集合表示的。下面列出了所創(chuàng)建的 RecordSet 對(duì)象 ( 游標(biāo) ) 的一些屬性和方法 :

  rs.Fields.Count: RecordSet 對(duì)象的字段總數(shù)。
  rs(i).Name: 第 i 個(gè)字段的名稱, i 由 0 算起到 rs.Fields.Count-1。
  rs(i): 讀取第 i 個(gè)字段的數(shù)據(jù), i 由 0 算起到 rs.Fields.Count-1。
  rs(" 字段名稱 "): 讀取指定字段的數(shù)據(jù)。
  rs.RecordCount: 游標(biāo)中的數(shù)據(jù)記錄總數(shù)。
  rs.EOF: 是否已指到最后一條記錄。
  rs.MoveNext: 將指標(biāo)移到下一筆記錄。
  rs.MovePrev: 將指標(biāo)移到上一筆記錄。
  rs.MoveFirst: 將指標(biāo)移到第一筆記錄。
  rs.MoveLast: 將指標(biāo)移到最后一筆記錄。
  rs.Close: 關(guān)閉 RecordSet 對(duì)象

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

  二、 Content Linking 組件

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

    Content Linking 組件創(chuàng)建管理 URL 列表的 Nextlink 對(duì)象,要使用 Content Linking 組件,必須需要先創(chuàng)建 Content Linking List 文件。 Content Linking 組件正是通過讀取這個(gè)文件來獲得處理我們希望鏈接的所有頁面的信息。事實(shí)上該文件是一個(gè)純文本文件,其內(nèi)容如下 :
  page1.htm one
  page2.htm two
  page3.htm three
  page4.htm four
  page5.htm five
  page6.htm six
     這個(gè)文本文件的每行有如下形式 :
     url description comment
    其中, URL 是與頁面相關(guān)的超鏈地址, description 提供了能被超鏈?zhǔn)褂玫奈谋拘畔ⅲ?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ò)電子讀物導(dǎo)航
  <%
  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 中有多少條項(xiàng)目,然后利用循環(huán)語句,并使用 GetNthURL、 GetNthDescription 方法逐一將存儲(chǔ)在 nextlink.txt 文件中的內(nèi)容讀出并顯示給客戶端瀏覽器。

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

  GetNextURL(file) 獲取內(nèi)容鏈接列表文件中所列的下一頁的 URL。
  GetPreviousDescription(file) 獲取內(nèi)容鏈接列表文件中所列的上一頁的說明行。
  GetListIndex(file) 獲取內(nèi)容鏈接列表文件中當(dāng)前頁的索引。
  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)站的總導(dǎo)航頁面后,我們當(dāng)然還希望在每一頁中添加一個(gè)“上一頁”、“下一頁”的導(dǎo)航超鏈,下面我們就來看看如何實(shí)現(xiàn)導(dǎo)航超鏈。

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

  <!--#include file="nextprev.inc"-->
  只要將這端代碼放在每個(gè)頁面中即可。 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 %>

熱門評(píng)論
最新評(píng)論
發(fā)表評(píng)論 查看所有評(píng)論(0)
昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過審核才能顯示)