|
互連網(wǎng)上的數(shù)據(jù)庫應(yīng)用大多采用 web 后臺(tái)數(shù)據(jù)庫,用 asp、php、jsp 等嵌入式腳本語言編程進(jìn)行數(shù)據(jù)的后臺(tái)存取。實(shí)際上,應(yīng)用微軟的 rds(remote data service 遠(yuǎn)程數(shù)據(jù)服務(wù))同樣可以進(jìn)行 web 服務(wù)器端的數(shù)據(jù)庫訪問,使用起來更顯簡(jiǎn)單。而這一技術(shù)一般的報(bào)刊雜志介紹的比較少。 rds 是微軟隨 ie4.01 以上瀏覽器發(fā)布的一個(gè) activex 組件,負(fù)責(zé)網(wǎng)絡(luò)系統(tǒng)中遠(yuǎn)端數(shù)據(jù)庫的訪問。與 asp 等數(shù)據(jù)庫訪問組件不同的是,rds 不是工作在 web 服務(wù)器端,而是調(diào)用瀏覽器本地的組件功能,實(shí)現(xiàn)真正的遠(yuǎn)程數(shù)據(jù)存取,所以在訪問服務(wù)器端的數(shù)據(jù)庫時(shí),必須提供服務(wù)器的 ip 地址和數(shù)據(jù)庫的絕對(duì)路徑,最后通過 sql 查詢語句,將數(shù)據(jù)取回到瀏覽器端顯示出來。 更讓人欣喜的是,瀏覽器端數(shù)據(jù)的顯示,不用像 asp 腳本那樣通過編程控制數(shù)據(jù)的版面編排,而是通過將 rds 作為數(shù)據(jù)源與網(wǎng)頁中普通的表格進(jìn)行“綁定”,通過十分簡(jiǎn)單的腳本語言控制,數(shù)據(jù)就會(huì)在表格中顯示出來。(而網(wǎng)頁中的表格,我們一般的用法是用它來控制頁面排版、布局。) 和一般的 activex 組件的使用一樣,rds 組件在網(wǎng)頁中用 <object id="" classid=""></object> 標(biāo)簽進(jìn)行引用。本例中我們的 id 設(shè)為 rds1,classid 為 bd96c556-65a3-11d0-983a-00c04fc29e33(在注冊(cè)表中應(yīng)當(dāng)能查找到)。用來顯示數(shù)據(jù)的 html 表格 id 設(shè)為 cheng_ji。把 rds1 作為數(shù)據(jù)源與表格 cheng_ji 綁定在一起的語法格式為: <table id="cheng_ji" datasrc="#rds1" datapagesize="6"> 還可以分頁顯示數(shù)據(jù),其中 datapagesize="6" 表示一頁表格顯示 6 條記錄。 在表格中顯示字段變量數(shù)據(jù)的語法為 <div datafld="字段名">。 本例中,按鈕“打開數(shù)據(jù)庫”調(diào)用 vb 腳本 opendb() 過程,把 ip 地址、數(shù)據(jù)庫路徑、sql 查詢語句等參數(shù)傳遞給 rds1,然后調(diào)用 rds1 的 refresh 方法取回?cái)?shù)據(jù)在表格 cheng_ji 中顯示出來。表格下面的四個(gè)按鈕調(diào)用翻頁函數(shù)可以前后查看數(shù)據(jù)。設(shè)置分頁功能對(duì)大量的數(shù)據(jù)可以進(jìn)行有效的緩沖,還可以平衡網(wǎng)絡(luò)的數(shù)據(jù)流量。 本例實(shí)現(xiàn)了一個(gè)學(xué)生成績(jī)單的查詢功能,access 數(shù)據(jù)庫 test_db.mdb 中成績(jī)表 cheng_ji 的表結(jié)構(gòu)為: xing_ming 文本 ‘姓名 xue_hao 文本 ‘學(xué)號(hào) yu_wen 數(shù)字 ‘語文 shu_xue 數(shù)字 ‘?dāng)?shù)學(xué) ying_yu 數(shù)字 ‘英語 mei_shu 數(shù)字 ‘美術(shù) ji_suan_ji 數(shù)字 ‘計(jì)算機(jī) html 代碼如下,查詢結(jié)果見圖。本例在 windows98 第一版下運(yùn)行通過。 <html> <head> <meta http-equiv="content-type" content="text/html; charset=gb_2312-80"> <title>成績(jī)公布</title> </head> <body bgcolor="#ffffff"> <center><font color=red size=5>成績(jī)公布</font></center><hr> <form name="form1"> <table border="0" align="center"> <tr> <td align="right">服務(wù)器 ip 地址:</td> <td> <!-定義服務(wù)器 ip 地址:--> <input type="text" size="50" name="server" value="</td> </tr> <tr> <td align="right">數(shù)據(jù)庫路徑:</td> <td> <!-定義服務(wù)器端數(shù)據(jù)庫路徑:--> <input type="text" size="50" name="dbq" value="c:\tmp\test_db.mdb"> </td> </tr> <tr> <td align="right">sql 查詢語句:</td> <td> <!-定義sql 查詢語句:--> <input type="text" size="50" name="sql" value="select * from cheng_ji"> </td> </tr> <tr> <td align="center" colspan="2"><input type="button" value="打開數(shù)據(jù)庫" onclick="opendb()"></td> </tr> </form> </table> <hr width="80%"> <table align="center" width= "400" border="1" cellspacing=0 id="cheng_ji" datasrc="#rds1" datapagesize="6"> <thead> <tr align="center"> <td bgcolor="#00ffff">姓名</td> <td bgcolor="#00ffff">學(xué)號(hào)</td> <td bgcolor="#00ffff">語文</td> <td bgcolor="#00ffff">數(shù)學(xué)</td> <td bgcolor="#00ffff">英語</td> <td bgcolor="#00ffff">美術(shù)</td> <td bgcolor="#00ffff">計(jì)算機(jī)</td> </tr> </thead> <tbody> <tr> <td><div datafld="xing_ming"></div></td> <td align="center"><div datafld="xue_hao"></div></td> <td align="right"><div datafld="yu_wen"></div></td> <td align="right"><div datafld="shu_xue"></div></td> <td align="right"><div datafld="ying_yu"></div></td> <td align="right"><div datafld="mei_shu"></div></td> <td align="right"><div datafld="ji_suan_ji"></div></td> </tr> </tbody> </table> <br> <center> <input type="button" value="第一頁" onclick="cheng_ji.firstpage()"> <input type="button" value="<<上一頁" onclick="cheng_ji.previouspage()"> <input type="button" value="下一頁>>" onclick="cheng_ji.nextpage()"> <input type="button" value="最后一頁" onclick="cheng_ji.lastpage()"> </center> <hr> <object id="rds1" classid="clsid:bd96c556-65a3-11d0-983a-00c04fc29e33" align="baseline"> </object> <script language="vbscript"> sub opendb() rds1.server = form1.server.value rds1.connect = "driver={microsoft access driver (*.mdb)}" & ";dbq=" & form1.dbq.value rds1.sql = form1.sql.value rds1.refresh end sub </script> </body> </html> |
|
|