摘 要:文章以ASP技術為基礎,介紹了基于ASP技術開發(fā)數(shù)據(jù)庫檢索程序的產生機理和
方法,并針對Web數(shù)據(jù)庫檢索程序特點,采用全文檢索數(shù)據(jù)庫方式,來實現(xiàn)基于ASP技術
開發(fā)Web數(shù)據(jù)庫檢索程序。
關鍵詞:ASP技術;Web數(shù)據(jù)庫;檢索程序
1 前 言
1.1 ASP(Active Service Page),是微軟推出的動態(tài)Web設計技術,是一種用于WWW服務的服務器端腳本環(huán)境,在站點的Web服務器上解釋腳本,可產生并執(zhí)行動態(tài)、交互式、高效率的站點服務器應用程序。利用它,可以很容易地把HTML標記、文本、腳本命令及ActiveX組件混合在一起構成ASP頁,以此來生成動態(tài)網(wǎng)頁,創(chuàng)建交互式的Web站點,實現(xiàn)對Web數(shù)據(jù)庫的訪問。
1.2 當用戶使用瀏覽器請求ASP主頁時,WEB服務器響應,調用ASP引擎來執(zhí)行ASP文件,并解釋其中的腳本語言(JScript 或VBScript),通過ODBC連接數(shù)據(jù)庫,由數(shù)據(jù)庫訪問組件ADO(ActiveX Data Objects)完成數(shù)據(jù)庫操作,最后ASP生成包含有數(shù)據(jù)查詢結果的HTML主頁返回用戶端顯示。
2 ASP技術及訪問機理
由于ASP在服務器端運行,運行結果以HTML主頁形式返回用戶瀏覽器。ASP技術的核心是內置的ActiveX服務器組件和對象。ActiveX服務器組件包括∶數(shù)據(jù)庫訪問組件(Database Access component),提供訪問服務器數(shù)據(jù)庫的功能;文件訪問組件(File Access component),提供讀寫服務器文件的功能;廣告輪播器組件(Ad Rotator component),提供廣告輪播器的功能;內容鏈接組件(Content Linking component),提供管理超級鏈接、上一頁、下一頁等鏈接功能;瀏覽器信息組件(Browser Capabilities Component),提供有關瀏覽器信息。內置對象包括∶請求(Request),從前端用戶取得信息;響應(Response),將信息送給前端用戶;服務器(Server),提供Web服務器工具。應用(Application),管理所有的會話信息,供所有用戶共享;會話(Session),儲存一次會話內的用戶信息,僅被該用戶訪問;對象上下文(ObjectContext),配合Transaction服務器進行分布式事務處理。
3 數(shù)據(jù)庫檢索程序的開發(fā)
ASP技術是開發(fā)網(wǎng)上數(shù)據(jù)庫服務系統(tǒng)的重要手段,利用ASP技術可以進行有效的網(wǎng)上數(shù)據(jù)庫檢索系統(tǒng)的開發(fā)利用。
3.1 通用檢索主頁的設計
通用檢索主頁的設計,實際就是對一個HTML FORM表單進行編碼和提交的過程。FORM表單是HTML中能夠實現(xiàn)Web頁面交互性的重要組成部分,它為Web頁面提供了豐富的交互對象,可以方便地完成信息查詢條件的錄入及數(shù)據(jù)庫、檢索途徑的選擇等。
3.2 數(shù)據(jù)庫接口程序設計
數(shù)據(jù)庫接口程序設計的關鍵是通過ActiveX服務器組件ADO及包含的對象,實現(xiàn)對數(shù)據(jù)源的讀寫,用戶可在瀏覽器畫面中檢索、輸入、更新和刪除數(shù)據(jù)庫信息,從而建立提供數(shù)據(jù)庫信息的主頁內容。ADO主要提供了七個對象和四個集合來完成對于數(shù)據(jù)庫的管理,包括:Connection、Command、Parameter、Recordset、Field、Property、Error以及Fields、Properties、Parameters、Errors。
3.2.1 定義數(shù)據(jù)源
在WEB服務器上打開“控制面板”,選中“ODBC”,在“系統(tǒng)DSN”下選“添加”,選定你希望的數(shù)據(jù)庫種類、名稱、位置等。本文定義“SQL SERVER”,數(shù)據(jù)源為“HT”,數(shù)據(jù)庫名稱為“HTDATA”,腳本語言采用Jscript。
3.2.2 創(chuàng)建數(shù)據(jù)庫鏈接(Connection)
創(chuàng)建數(shù)據(jù)庫鏈接(Connection)。通過服務器對象的CreateObject方法,可以創(chuàng)建Connection對象和使用變量接受對象引用。一旦連接對象創(chuàng)建之后,它就可用來打開到任何ODBC數(shù)據(jù)源的連接。
3.2.3 創(chuàng)建數(shù)據(jù)對象(Recordset)
創(chuàng)建數(shù)據(jù)對象(Recordset)。
Dim Rs ‘申明變量’
Set Rs=Server.CreatObject("ADODB.Recordset") ‘創(chuàng)建數(shù)據(jù)對象’
Rs.PageSize=10 ‘設置一頁所顯示的記錄數(shù)’
3.2.4 操作數(shù)據(jù)庫
(1)首先要定義SQL查詢語句:
Dim sql ‘申明變量’
sql="select * from publication where title like ’ASP%%’" ‘定義SQL查詢語句’,檢索數(shù)據(jù)庫的publication表中名以ASP開頭的所有信息的記錄。
Const adOpenkeyset=1 ‘定義Recordset的類型’
(2)然后執(zhí)行該查詢命令,Rs.Open Sql,conn, adOpenkeyset ‘執(zhí)行sql語句’,在數(shù)據(jù)對象Rs中保存檢索結果。
如調用Server.CreateObject方法取得“ADODB.Connection”的實例,再使用Open方法打開數(shù)據(jù)庫:
conn = Server.CreateObject(“ADODB.Connection”)
conn.Open(“HT”)
來操作數(shù)據(jù)庫。
(3)最后指定要執(zhí)行的SQL命令
連接數(shù)據(jù)庫后,可對數(shù)據(jù)庫操作,如查詢,修改,刪除等,這些都是通過SQL指令來完成的,如要在數(shù)據(jù)表signaltab中查詢代碼中含有“X”的記錄
sqlStr = “select * from signaltab where code like ‘%X%’”
rs = conn.Execute(sqlStr)
4 數(shù)據(jù)庫檢索代碼
基于ASP技術開發(fā)的Web數(shù)據(jù)庫檢索程序,是利用數(shù)據(jù)庫檢索系統(tǒng)網(wǎng)絡結構和開發(fā)工具,將多個數(shù)據(jù)庫集成在一個平臺上,來實現(xiàn)多數(shù)據(jù)庫的檢索,從而提高數(shù)據(jù)庫的檢索效率。
以下是一個全文索引的數(shù)據(jù)庫檢索部分代碼:
Sub Initialize
Dim ArrNsf As Variant
Dim item As NotesItem
’獲得文檔 context,因為此代理是一個$$QuerySaveAgent,所以$$QuerySaveAgent
可以訪問 Context文檔上的項目。
Dim sess As New NotesSession
Dim doc As NotesDocument
Set doc = sess.DocumentContext
’獲得欲檢索的數(shù)據(jù)庫,存放在數(shù)組ArrNsf內:
ArrNsf= doc.DatabaseName
’如果沒有輸入檢索條件,則輸出提示信息:
If Trim(Cstr(doc.Query(0)))="" Then
Goto EmptyQuery
End If
Dim MatchDoc As NotesDocument
Dim db As NotesDatabase,
Dim collection As NotesDocumentCollection
’下列循環(huán)從數(shù)組ArrNsf中取得欲檢索的數(shù)據(jù)庫進行處理:
For nsfCount=0 To Ubound( ArrNsf )
SearchDB=ArrNsf(nsfCount)
Set db = sess.GetDatabase("",SearchDB)
’出現(xiàn)錯誤則轉向:
On Error Goto BadQuery
’獲得滿足查詢條件的記錄集:
Set collection = db.FTSearch(doc.Query(0),0)
On Error Goto 0
’輸出數(shù)據(jù)庫標題:
’輸出該數(shù)據(jù)庫中滿足條件的記錄個數(shù):
There are " & Str$(collection.Count) & " matching
documents
’下列循環(huán)從滿足條件的記錄集中讀取記錄并輸出:
For i% = 1 To collection.Count
Set MatchDoc = collection.GetNthDocument(i%)
’如果文檔包含Subject或Title,則輸出Subject或Title:
Set item =MatchDoc.GetFirstItem( "Subject" )
If ( item Is Nothing ) Then
Set item = MatchDoc.GetFirstItem( "Title" )
End If
If Not (item Is Nothing) Then
" & item.Name & ": & item.Text
End If
’如果文檔包含Categories,則輸出Categories:
Set item = MatchDoc.GetFirstItem( "Categories" )
If Not (item Is Nothing) Then
Print item.Name & ": " & item.Text
End If
’輸出文檔產生日期和作者:
createDate = MatchDoc.Created
Document create date: &createDate
Authors:
Forall aAuthor In MatchDoc.Authors
Print aAuthor
End Forall
Next
Next
Out:
Exit Sub
EmptyQuery:
Search query can not be empty
Resume Out
BadQuery:
Query is not understandable: " & doc.Query(0) & {"
Resume Out
End Sub
5 總 結
5.1 Web服務的應用越來越廣,其數(shù)據(jù)索引也隨之有增無減。同時,在編寫Web數(shù)據(jù)庫檢索代碼時,既要考慮其安全性,又要確保應用的高質量,致使及時開發(fā)相應的數(shù)據(jù)庫檢索程序越來越迫切。
5.2 ASP技術是中小型自主開發(fā)網(wǎng)上數(shù)據(jù)庫服務系統(tǒng)工具。本文從Web網(wǎng)上數(shù)據(jù)庫檢索系統(tǒng)的設計出發(fā),探討了如何利用ASP技術進行有效的網(wǎng)上數(shù)據(jù)庫檢索系統(tǒng)的開發(fā)利用,具有較強的現(xiàn)實意義。
參考文獻:
[1] 劉云生.數(shù)據(jù)庫設計與分析[M].武漢:華中理工大學出版社,1993.
[2] 嚴蔚敏,吳偉民.數(shù)據(jù)結構[M].北京:清華大學出版社,2001.
[3] 鄭若忠,寧洪.數(shù)據(jù)庫原理[M].湖南:國防科技大學出版社,1998.
[4] 李大友.數(shù)據(jù)庫原理及應用[M].北京:清華大學出版社,1993.