隨著Internet技術(shù)的迅速發(fā)展,計(jì)算機(jī)在各個(gè)行業(yè)越來(lái)越發(fā)揮著舉足輕重的作用。利用先進(jìn)的信息技術(shù)和數(shù)據(jù)庫(kù)技術(shù),構(gòu)建公司內(nèi)部的Intranet,開(kāi)發(fā)基于Web的數(shù)據(jù)庫(kù)管理系統(tǒng),能極大的提高工作效率、節(jié)約成本。ASP(Active Server Page)是Microsoft推出的一種服務(wù)器端命令執(zhí)行環(huán)境,與瀏覽器無(wú)關(guān),腳本完全在服務(wù)器運(yùn)行,將產(chǎn)生動(dòng)態(tài)的信息,形成普通的HTML文件,發(fā)送到客戶(hù)端。ADO(ActiveX Data Objects)是ASP內(nèi)置的ActiveX服務(wù)器組件,可以在用戶(hù)端實(shí)現(xiàn)“即時(shí)更新、即時(shí)顯示”的最新Web數(shù)據(jù)庫(kù)技術(shù),可以很方便的通過(guò)瀏覽器頁(yè)面實(shí)現(xiàn)對(duì) 數(shù)據(jù)的輸入、查詢(xún)、更新等操作。
一、 利用ASP和ADO實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作的工作流程
ASP內(nèi)嵌了五個(gè)對(duì)象Resquest、Response、Server、Seesion、Application,實(shí)現(xiàn)信息的獲取、傳送及保存等。ADO的主要對(duì)象有Connection、Command、Recordset等。利用ADO的Connection 對(duì)象和ODBC的設(shè)定,可以建立與多種數(shù)據(jù)庫(kù)(Informix、Oracle、Access等)的連接,從而實(shí)現(xiàn)數(shù)據(jù)的輸入、查詢(xún)、更新等操作。首先,利用ASP的Server對(duì)象的CreateObject方法創(chuàng)建一個(gè)ADO的對(duì)象實(shí)例,以ADO的Connection對(duì)象建立相應(yīng)數(shù)據(jù)庫(kù)與應(yīng)用程序之間的聯(lián)接;接著,通過(guò)Command對(duì)象將數(shù)據(jù)請(qǐng)求的SQL(Standard Query Language)標(biāo)準(zhǔn)描述語(yǔ)句指定到Command對(duì)象的屬性,然后執(zhí)行數(shù)據(jù)庫(kù)的輸入、查詢(xún)等操作;最后,數(shù)據(jù)庫(kù)服務(wù)器將響應(yīng)的數(shù)據(jù)結(jié)果存儲(chǔ)到Recordset對(duì)象,在服務(wù)器端的腳本語(yǔ)言環(huán)境中就可以加以處理、分析、顯示數(shù)據(jù)于客戶(hù)端瀏覽器上。
二、 實(shí)現(xiàn)數(shù)據(jù)輸入、查詢(xún)的實(shí)例
公司的分支機(jī)構(gòu)眾多、分布廣泛,上級(jí)機(jī)構(gòu)經(jīng)常要對(duì)各基層機(jī)構(gòu)的業(yè)務(wù)數(shù)據(jù)進(jìn)行匯總,統(tǒng)計(jì)。以前主要是通過(guò)電話(huà)上報(bào)數(shù)據(jù),然后手工匯總、統(tǒng)計(jì),編制成報(bào)表。隨著公司內(nèi)部的聯(lián)網(wǎng),就可以將網(wǎng)絡(luò)技術(shù)和數(shù)據(jù)庫(kù)技術(shù)結(jié)合,將數(shù)據(jù)的匯總、統(tǒng)計(jì)實(shí)現(xiàn)自動(dòng)化。以下將結(jié)合公司的實(shí)際,通過(guò)與Informix數(shù)據(jù)庫(kù)的連接實(shí)現(xiàn)此功能:
1.創(chuàng)建數(shù)據(jù)庫(kù)
在UNIX操作系統(tǒng)上創(chuàng)建一個(gè)用于數(shù)據(jù)匯總、統(tǒng)計(jì)的數(shù)據(jù)庫(kù),將數(shù)據(jù)庫(kù)命名為cxdb,在此數(shù)據(jù)庫(kù)上創(chuàng)建如下表:
Create table test
(
br char(6), #單位代碼
dt date, #日期
sco money,#業(yè)績(jī)
)
2. 連接數(shù)據(jù)庫(kù)
在WINDOWS98操作系統(tǒng)上,安裝數(shù)據(jù)庫(kù)連接驅(qū)動(dòng)程序Informix-CLI,并運(yùn)行Informix-CLI的SetNet32進(jìn)行配置,然后運(yùn)行Ilogin 32 Demo 測(cè)試配置是否正確。確認(rèn)配置成功后,就可以對(duì)Web數(shù)據(jù)庫(kù)實(shí)現(xiàn)各種操作了。在網(wǎng)頁(yè)中加入如下語(yǔ)句,就能對(duì)UNIX端的數(shù)據(jù)庫(kù)進(jìn)行連接:
Set con=Server.CreateObject(“ADODB.Connection”)
Con.Open “Driver={INFORMIX-CLI 2.5 (32BIT)};Database=cxdb;Server=11.32.65.45;UID=;PWD=”
其中,Driver是數(shù)據(jù)庫(kù)的連接驅(qū)動(dòng)程序,其字符串要與ODBC驅(qū)動(dòng)程序中的名稱(chēng)保持一致;Database是數(shù)據(jù)庫(kù)名稱(chēng);Server是數(shù)據(jù)庫(kù)服務(wù)器主機(jī)的IP地址或名稱(chēng),如果為名稱(chēng)則必須編輯hosts文件;UID是為用戶(hù)名稱(chēng);PWD為口令。
3.實(shí)現(xiàn)數(shù)據(jù)的輸入、查詢(xún)
為實(shí)現(xiàn)對(duì)數(shù)據(jù)的輸入、查詢(xún)功能,必須創(chuàng)建一個(gè)帶有Form表單的文件,用來(lái)接受用戶(hù)的數(shù)據(jù)輸入及查詢(xún)條件,利用POST方法將Form表單的數(shù)據(jù)提交給服務(wù)器進(jìn)行處理。
編輯接受用戶(hù)輸入的文件input.asp,由用戶(hù)輸入“單位”、“日期”、“業(yè)績(jī)“,當(dāng)用戶(hù)點(diǎn)擊提交按鈕時(shí),通過(guò)POST方法將剛才輸入的數(shù)據(jù)發(fā)送WEB服務(wù)器,并執(zhí)行todb.asp文件在數(shù)據(jù)庫(kù)cxdb中增加一條記錄。其中,input.asp和todb.asp的源代碼如下:
input.asp:
<HTML>
<HEAD>
<TITLE>輸入數(shù)據(jù)</TITLE>
</HEAD>
<BODY>
<FORM method="POST" action="todb.asp">
<P>單位:<INPUT type="text" name="T1" size="20">
<P>日期:<INPUT type="text" name="T2" size="20">
<P>業(yè)績(jī):<INPUT type="text" name="T3" size="20">
<p><INPUT type="submit" value="提交" name="B1">
<INPUT type="reset" value="重寫(xiě)" name="B2">
</FORM>
</BODY>
</HTML>
todb.asp:
<% br=Request.Form("T1")
dt=Request.Form("T2")
sc=Request.Form("T3") ‘將input.asp表單中的數(shù)據(jù)取出到變量br,dt,sc中
Set con=Server.CreateObject(“ADODB.Connection”)
Con.Open “Driver={INFORMIX-CLI 2.5 (32BIT)};Database=cxdb;Server=11.32.65.45;UID=;PWD=”
‘以上兩語(yǔ)句為建立ADO對(duì)象,并連接數(shù)據(jù)庫(kù)
sql="INSERT INTO test( br,dt,sc) VALUES('"&br&"','"&dt&"','"&sc&"')"
Set rs=con.execute(sql) ’執(zhí)行SQL語(yǔ)句將數(shù)據(jù)增加到數(shù)據(jù)庫(kù)中
Rs.close
Con.close
%>
數(shù)據(jù)的查詢(xún)與輸入一樣的實(shí)現(xiàn),只是執(zhí)行的SQL語(yǔ)句不同,查詢(xún)執(zhí)行是的滿(mǎn)足用戶(hù)輸入條件的SELECT語(yǔ)句。源代碼如下:
indt.asp
<HTML>
<HEAD>
<TITLE>輸入條件</TITLE>
</HEAD>
<BODY>
<FORM method="POST" action="seldt.asp">
<P>日期:<INPUT type="text" name="T1" size="20">
<P>
<INPUT type="submit" value="提交" name="B1">
<INPUT type="reset" value="重寫(xiě)" name="B2">
</FORM>
</BODY>
</HTML>
seldt.asp
<HTML>
<HEAD>
<TITLE>執(zhí)行查詢(xún)并顯示結(jié)果</TITLE>
</HEAD>
<BODY>
<% dt=Request.Form("T1") ‘將indt.asp表單中的數(shù)據(jù)取出到變量dt中
Set con=Server.CreateObject(“ADODB.Connection”)
Con.Open “Driver={INFORMIX-CLI 2.5 (32BIT)};Database=cxdb;Server=11.32.65.45;UID=;PWD=”
‘以上兩語(yǔ)句為建立ADO對(duì)象,并連接數(shù)據(jù)庫(kù)
sql="select sco as sm from test where dt=’#”&dt&”#’”
set rs=con.execute(sql) ’執(zhí)行SQL語(yǔ)句從數(shù)據(jù)庫(kù)中查找滿(mǎn)足條件的數(shù)據(jù)
if not rs.eof then ‘判斷是否有滿(mǎn)足條件的數(shù)據(jù)
do while not rs.eof
Response.Write dt&” 業(yè)績(jī)是: “&rs(“sco”)&”<br>” ‘循環(huán)將滿(mǎn)足條件的數(shù)據(jù)顯示
Rs.movenext
Loop
End if
Rs.close
Con.close ‘關(guān)閉連接
%>
</BODY>
</HTML>
三、 結(jié)束語(yǔ)
ASP在WINDOWS98上的運(yùn)行必須安裝Personal Web Server4.0 以上版本。本文以一個(gè)非常簡(jiǎn)單的實(shí)例,介紹了以ASP實(shí)現(xiàn)數(shù)據(jù)的輸入、查詢(xún)的基本方法。在實(shí)際編程中,可以將ASP和SQL有機(jī)地結(jié)合,實(shí)現(xiàn)諸如某時(shí)間間隔的統(tǒng)計(jì)、排序、分組的查詢(xún),有條件的更新、刪除數(shù)據(jù)等更加復(fù)雜的操作。