PersonalCorpus 版 (精华区)
发信人: scorpio (神秘天蝎), 信区: WebDev
标 题: 如何在网页中访问WEB数据库
发信站: 哈工大紫丁香 (2002年01月30日11:52:17 星期三), 站内信件
随着计算机技术的发展,WEB得到了越来越广泛的应用。WWW页面已经由静态网页逐渐发
展为动态的交互式的网页,WWW网页与数据库的连接也显得越来越重要。在WWW诞生的初
期,就可以通过通用网关接口(CGI)来访问数据库,后来许多厂商不断开发出新的接口
技术,使得访问WEB数据库更加简洁、方便和高效。本文将综合介绍几种在WWW中访问数
据的方法,重点介绍比较新的ASP技术和IDC技术,对JDBC和CGI将仅做简单介绍。假设数
据库服务器的操作系统为Windows NT Server 4.0,数据库是Microsoft SQL Server 6.
5,其中有一名为example的数据库,一个名为student的表,其中存放着年龄、性别等信
息,现在讨论如何在网页中来访问它。
1. 用ASP访问WEB数据库
从IIS3.0开始微软推出了Active Server Pages(ASP),这是WEB技术的一个重大进步。
传统的静态页面必须手工编辑HTML页来改变WEB服务器发送给浏览器的内容,而利用ASP
可以在服务器上动态生成WEB页面。而且与CGI、ISAPI等方法相比,ASP不需要别的设计
环境,可以直接在HTML文件中包含可执行的脚本,从而将HTML开发和脚本开发合而为一
,大大简化了WEB应用程序的开发。
ASP的运行过程可简述如下:浏览器向WEB服务器请求一个ASP文件时,ASP脚本开始运行
,WEB服务器从头至尾运行ASP脚本,并且把HTML页返回给浏览器。如果要通过ASP访问W
EB数据库,则WEB服务器接受浏览器请求,通过ODBC或者OLE DB把请求发送给数据库服务
器,再从数据库服务器接受数据,把产生的网页和数据送回到浏览器。
ASP中访问数据库是通过ADO(ActiveX Data Objects)来实现的,这种方法使用方便,
效率高,对于那些有VB数据库编程经验的程序员几乎不费吹灰之力。下面让我们来看一
个完整网页的ASP文件代码(在‘后为注释):
Asp文件Example.asp
<%@ LANGUAGE="VBSCRIPT"%>
<% dim sql,con,rs
‘按照DSN和数据库权限打开数据库联接
sql="DSN=HPEDB;UID=sa;PWD=1;DATABASE=hpedb"
Set Con=Server.CreateObject("ADODB.Connection")
Con.Open(sql)
‘按照SQL语句执行查询,返回结果集
sql="select * from student where age=23"
set rs=con.execute(sql)
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb_2312-80">
<title>用ASP查询WEB数据库</title>
</head>
<body>
<p>满足查询条件的客户如下: </p>
<table border="1" width="60%" aligh="center">
<tr>
<th width="20%"><p align="center">姓名</p></th>
<th width="20%"><p align="center">性别</p></th>
<th width="20%"><p align="center">年龄</p></th>
</tr>
‘显示从数据库返回的结果集
<% do while not rs.eof%>
<tr>
<%for i=0 to rs.fieldS.count-1%>
<td valign="top"><%=rs(i)%> </td>
<%next%>
</tr>
<%rs.movenext
loop
rs.close
con.close%>
</table>
</body>
</html>
2. 用IDC+HTX访问WEB数据库
IDC也是微软推出的一种比较简单的访问WEB数据库的方法,它使用了两类文件:IDC脚本
文件(.idc)和HTML模板文件(.htx)。它的工作原理是这样的:如果浏览器发送给WE
B服务器(IIS)的字符串以idc结尾,IIS就将其发送给IDC模块(IIS的一个动态链接库
),然后读取脚本文件并同数据库服务器交互,得到查询结果后,用模板文件(.htx)
格式化,生成一个实际的HTML文件,再由IIS发送回浏览器。
因此用IDC实现对WEB数据库的访问需要三个文件:一是调用IDC的HTML文件,一般用表单
,将其ACTION设为IDC文件,这样可实现动态的数据库查询;二是IDC文件,其中有关键
的三个部分:Datasource与所创建的ODBC数据源名称相对应,Template指定用于格式化
输出结果的HTX文件,SQLStatement是要执行的若干SQL语句,另外还有一些可选字段,
可参考有关资料;三是HTX文件,它实际是一种含有特殊标记的HTML文件,它用到6个关
键字(begindetail, enddetail, if, else, endif, ’%%’),用于输出IDC的查询结
果。下面将给出一个完整的例子:
HTML文件example.htm
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb_2312-80">
<title>用IDC和HTX访问WEB数据库</title>
</head>
<body>
<p>请输入需查询的年龄</p>
<form action="example.idc" method="POST" target="content">
<p><input type="text" size="15" name="age" values> </p>
<p><input type="submit" value=" 查询 "></p>
</form>
</body>
</html>
IDC文件example.idc
Datasource: example
Username: sa
password: 1
Template: example.htx
SQLStatement:
+SELECT * from student where (age=convert(int,'%age%'))
HTX文件example.htx
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=gb_2312-80">
<title>查询结果</title>
</head>
<body>
<hr>
<div align="center"><center>
<table border="1">
<%begindetail%> <tr>
<td align="center"><b>姓名</b></td>
<td align="center"><b>年龄</b></td>
<td align="center"><b>性别</b></td>
</tr>
<tr>
<td align="center"><%name%></td>
<td align="center"><%age%></td>
<td align="center"><%sex%></td>
</tr>
<%enddetail%></table>
</center></div><%if CurrentRecord EQ 0%>
<p align="center"><b>抱歉,没有符合查找条件的记录。</b></p>
<%endif%>
<hr>
</body>
</html>
3. 用JDBC访问WEB数据库
JAVA数据库互联接口(JDBC)是一种可用于执行SQL语句的数据库API,它由一些JAVA语
言写的类、界面组成。它在功能上与ODBC相同,给开发人员提供了一个统一的、标准的
数据库访问接口。以下是它的重要接口:
Java.sql.DriverManager用来处理加载驱动程序并且为创建新的数据库联接提供支持
Java.sql.Connection负责建立与指定数据库的联接
Java.sql.Statement在一个给定的联接中作为SQL语句执行的容器,它还有两个子类。
Java.sql.ResultSet表示从数据库服务器返回的结果集。
JDBC的使用方法如下:在网页中用<applet code=’’></applet>标记来应用JAVA小程序
,在小程序中用import sql.*来调用SQL包,这样就可以利用上述接口来访问WEB数据库
。
4. 用CGI访问WEB数据库
通用网关接口技术(CGI)是比较早的访问WEB数据库的方法,它的使用方法是这样的:
用任意一种WEB服务器内置语言编写CGI程序,包括流行的PERL、C、C++等,再在HTML网
页中设置表单的ACTION为CGI应用程序(.exe)。虽然它的应用灵活,开发工具丰富,功
能也很完善,但是由于使用太复杂,比如一个简单的查询可能就需要上百条语句,运行
效率也不高,所以在新的技术不断出现的情况下,使用的越来越少,这里也不做详细介
绍,有关CGI的原理和编写可参考有关资料。
总之,在网页中访问WEB数据库的方法多种多样,编程有繁有简,功能有强有弱,效
率有高有低,但是总的看来随着技术的发展,分工越来越细,开发WEB应用程序的软件工
程师应当选择适当的方法,把精力集中在应用程序本身,不应在接口上耗费太多时间,
以上只是笔者的一点拙见,不当之处,敬请指正。
--
不能解开的心锁,不能抗拒的声音,
不能防御的刀锋,不能不痛的伤口,
最后,都是不能不皈依的虚无。
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 210.46.68.52]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:5.106毫秒