相關資訊
本類常用軟件
-
福建農(nóng)村信用社手機銀行客戶端下載下載量:584204
-
Windows優(yōu)化大師下載量:416896
-
90美女秀(視頻聊天軟件)下載量:366961
-
廣西農(nóng)村信用社手機銀行客戶端下載下載量:365699
-
快播手機版下載量:325855
這篇文章將給大家介紹一些常用ASP ActiveX 組件使用方法,希望能幫助到大家。
當你用 ASP 編寫服務器端應用程序時,必須依靠 ActiveX 組件來強大 Web 應用程序的功能,譬如:你需要連接數(shù)據(jù)庫,對數(shù)據(jù)庫進行在線操作等等,
最近仍有不少朋友來信問我, ASP 是否只能在 microsoft IIS 上運行,是否可以在非 NT 平臺上運作?本來這個問題我已經(jīng)回答過很多遍了 : 我只是聽說過有某種可以支持的軟件,卻從沒見過。但一些熱情的朋友仍然孜孜不倦地來信詢問,于是在朋友們的盛情之下,我訪遍了 ASP 相關站點,竟驚奇的發(fā)現(xiàn),原來 ASP 的確是可以運行在其它非 NT 平臺上的,因此在本篇的開頭,我就給來信的朋友們簡要介紹一下如何在非 NT 平臺上使用 ASP。
要在非 NT 平臺上開發(fā)并運行 ASP 應用程序我們可以依賴于一套名為 Instant ASP 的第三方軟件,它的廣告標語非常吸引人“ASP Anytime, Anywhere”,我想所有 ASP 的開發(fā)者們看到如此的標語必然興奮不已。這套由 Halcyon 軟件公司開發(fā)的軟件使得你無需重復開發(fā)原有 ASP 應用程序即可以將它運行在任何操作平臺上 ! 這樣非但節(jié)省了大量的開發(fā)時間,而且使得 ASP 真正成為了一種跨平臺的 Internet、 Intranet 或 Extranet 應用程序。 Instant ASP 本身其實是一套基于 Java 的應用程序,因此通過它你可以將基于 WEB 的 ASP 應用程序運行在任何平臺上,下表列出了 Instant ASP 目前版本所支持的操作平臺。
更令人吃驚的是 Instant ASP 不僅提供了 ASP 的運作環(huán)境,而且它較目前市場上的 ASP 應用還提供了更為強大和實用的功能,它將 ActiveX 組件和 EntERPrise Java Beans 或者 CORBA-compliant objects 組合起來,從而使 ASP 有了更為廣泛的應用。它同樣提供了通過 ADO 接口訪問連接各種數(shù)據(jù)庫,并生成動態(tài)頁面的強大功能。對于開發(fā)者而言可以使用自己擅長的編程語言或工具如 :Visual Basic, JScript, VBScript, C++, Java, HTML, Delphi , MS Visual InterDev 等等來進行開發(fā)。關于 Instant ASP 具體安裝和操作我就不在這里展開了,有興趣的朋友可以到它的站點上去看看 halcyonsoft.com,你還可以免費下載一個試用版試試。
今天我們接著來看看其它的一些 ASP 常用組件。
一、 Database Access 組件
我們在 WEB 服務器上運用 WEB 應用程序進行的最常見和最實用的任務就是訪問服務器端的數(shù)據(jù)庫。而 ASP 內(nèi)建的 Database Access 組件使得我們能夠輕而易舉地通過 ActiveX Data Objects (ADO) 訪問存儲在服務器端的數(shù)據(jù)庫或其他表格化數(shù)據(jù)結構中的信息。 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 的先進的與語言無關性和查詢處理功能。熟悉 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、單擊“開始”,選設置控制面板。
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ǎng)站往往是存放在遠端的虛擬服務器上,因此要建立和修改 DSN 的設置比較麻煩。而使用 DSN-less 方法直接指定遠端數(shù)據(jù)庫所在位置恰恰解決了這一問題,方法如下 :
< % connstr = "DSN"%>
DSN-less: 是另一種通過在 ASP 文件里直接指定數(shù)據(jù)庫文件所在位置,而無需建立 DSN 的方法。由于許多公司沒有自己的 WEB 服務器,他們的網(wǎng)站往往是存放在遠端的虛擬服務器上,因此要建立和修改 DSN 的設置比較麻煩。而使用 DSN-less 方法直接指定遠端數(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。
當連接了數(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)蝿眨?Connection 對象仍有許多不足。確切地說,檢索和顯示數(shù)據(jù)庫信息的 Connection 對象不能用于創(chuàng)建腳本,您必須確切知道要對數(shù)據(jù)庫作出的更改,然后才能使用查詢實現(xiàn)更改。對于檢索數(shù)據(jù)、檢查結果、更改數(shù)據(jù)庫, ADO 提供了 Recordset 對象。正如它的名稱所暗示的那樣, Recordset 對象有許多您可以使用的特性,根據(jù)您的查詢限制,檢索并且顯示一組數(shù)據(jù)庫行,即記錄。 Recordset 對象保持查詢返回的記錄的位置,允許您一次一項逐步掃描結果。根據(jù) Recordset 對象的指針類型屬性設置,您可以滾動和更新記錄。數(shù)據(jù)庫指針可以讓您在一組記錄中定位到特定的項。指針還用于檢索和檢查記錄,然后在這些記錄的基礎上執(zhí)行操作。 Recordset 對象有一些屬性,可用于精確地控制指針的行為,提高您檢查和更新結果的能力。
Recordset 的使用方法如下 :
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL 指令 , Conn, 1, 1 " 讀取
或
rs.Open SQL 指令 , Conn, 1, 3 " 新增、修改、或刪除
第三步 : 使用 RecordSet 屬性和方法,并顯示執(zhí)行的結果。
通過以上指令,我們創(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: 關閉 RecordSet 對象
有關 ADO 的其他介紹,作者將在今后給大家詳細講解。
二、 Content Linking 組件
如果你的網(wǎng)站有一系列相互關聯(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 是與頁面相關的超鏈地址, description 提供了能被超鏈使用的文本信息, comment 則包含了不被 Content Linking 組件解釋的注釋信息,它的作用如同程序中的注釋。 description 和 comment 參數(shù)是可選的。
下面我們來看看如何具體使用 Content Linking 組件 :
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title> 網(wǎng)絡電子讀物寶藏 < /title>
</head>
<body>
<p> 網(wǎng)絡電子讀物導航
<%
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 代碼。因此,我們必須利用前幾篇中所學到的服務器端包容 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 %>