互连网上的数据库应用大多采用 web 后台数据库,用 asp、php、jsp 等嵌入式脚本语言编程进行数据的后台存取。实际上,应用微软的 rds(remote data service 远程数据服务)同样可以进行 web 服务器端的数据库访问,使用起来更显简单。而这一技术一般的报刊杂志介绍的比较少。 rds 是微软随 ie4.01 以上浏览器发布的一个 activex 组件,负责网络系统中远端数据库的访问。与 asp 等数据库访问组件不同的是,rds 不是工作在 web 服务器端,而是调用浏览器本地的组件功能,实现真正的远程数据存取,所以在访问服务器端的数据库时,必须提供服务器的 ip 地址和数据库的绝对路径,最后通过 sql 查询语句,将数据取回到浏览器端显示出来。 更让人欣喜的是,浏览器端数据的显示,不用像 asp 脚本那样通过编程控制数据的版面编排,而是通过将 rds 作为数据源与网页中普通的表格进行“绑定”,通过十分简单的脚本语言控制,数据就会在表格中显示出来。(而网页中的表格,我们一般的用法是用它来控制页面排版、布局。) 和一般的 activex 组件的使用一样,rds 组件在网页中用 <object id="" classid=""></object> 标签进行引用。本例中我们的 id 设为 rds1,classid 为 bd96c556-65a3-11d0-983a-00c04fc29e33(在注册表中应当能查找到)。用来显示数据的 html 表格 id 设为 cheng_ji。把 rds1 作为数据源与表格 cheng_ji 绑定在一起的语法格式为: <table id="cheng_ji" datasrc="#rds1" datapagesize="6"> 还可以分页显示数据,其中 datapagesize="6" 表示一页表格显示 6 条记录。 在表格中显示字段变量数据的语法为 <div datafld="字段名">。 本例中,按钮“打开数据库”调用 vb 脚本 opendb() 过程,把 ip 地址、数据库路径、sql 查询语句等参数传递给 rds1,然后调用 rds1 的 refresh 方法取回数据在表格 cheng_ji 中显示出来。表格下面的四个按钮调用翻页函数可以前后查看数据。设置分页功能对大量的数据可以进行有效的缓冲,还可以平衡网络的数据流量。 本例实现了一个学生成绩单的查询功能,access 数据库 test_db.mdb 中成绩表 cheng_ji 的表结构为: xing_ming 文本 ‘姓名 xue_hao 文本 ‘学号 yu_wen 数字 ‘语文 shu_xue 数字 ‘数学 ying_yu 数字 ‘英语 mei_shu 数字 ‘美术 ji_suan_ji 数字 ‘计算机 html 代码如下,查询结果见图。本例在 windows98 第一版下运行通过。 <html> <head> <meta http-equiv="content-type" content="text/html; charset=gb_2312-80"> <title>成绩公布</title> </head> <body bgcolor="#ffffff"> <center><font color=red size=5>成绩公布</font></center><hr> <form name="form1"> <table border="0" align="center"> <tr> <td align="right">服务器 ip 地址:</td> <td> <!-定义服务器 ip 地址:--> <input type="text" size="50" name="server" value="http://192.168.0.100"> </td> </tr> <tr> <td align="right">数据库路径:</td> <td> <!-定义服务器端数据库路径:--> <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="打开数据库" 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">学号</td> <td bgcolor="#00ffff">语文</td> <td bgcolor="#00ffff">数学</td> <td bgcolor="#00ffff">英语</td> <td bgcolor="#00ffff">美术</td> <td bgcolor="#00ffff">计算机</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> |
|