WWW是目前Internet上发展最快的领域,也是Inernet网上最重要的信息检索手段。早期的WEB页面主要是用来传递静态的HTML文档,后来由于CGI接口、VBScript和JavaScript语言的引入,特别是近几年发展起来的ASP技术,使得WEB页面可以方便传播动态信息。借助ASP技术,可以设计出具有声音、动画、图形、图像和各种特殊效果的WEB页面,以及方便的访问数据库。 一、ASP技术 1.ASP工作原理 ASP,是Active Server Pages的缩写,即"服务器端动态网页"。它是基于WEB的一种编程技术,能够把HTML文件、脚本命令以及COM组件组合在一起,形成一个能够在服务器端运行的动态WEB应用程序,并能够按照用户的要求制作出标准的HTML页面传递给客户端浏览器。 有了ASP,就不必担心用户的浏览器是否能够读懂动态网页中所编写的代码,因为所有的程序都在服务器端执行。当程序执行完毕后,服务器端执行的结果返回给客户端浏览器,这样就减轻了客户端浏览器的负担,大大提高了交互的速度。 2.ASP的运行环境 目前,ASP可运行在以下三种环境:Windows NT(2000 Server)+IIS4.0(Internet Information Server)以上;Windows NT workstation +Peer Web Server;Windows95/98+PWS(Personal Web Server)。 3.ASP文件的建立 ASP的程序代码简单、通用,文件名由.asp结尾,通常由四个部分构成:标准的HTML标记;ASP语法命令:位于<%%>之间;服务器端的include语句;脚本语言。 4.ASP的内置对象 在面向对象编程中,对象是具有属性(数据)和方法(行为方式)的实体。ASP中提供了六个内置对象供用户直接调用,它们分别是:Application对象,控制服务器端应用程序的启动和终止状态,并保存整个应用程序过程中的信息;Request对象,从用户端获取信息传递给服务器,它是ASP读取用户输入的主要方法;Response对象,服务器将输出的内容发送到客户端;Server对象,提供服务器的方法和属性;Session对象,存储特定的用户会话所需的信息;Object Context对象,配合服务器进行分布事务处理。 二、ASP中的数据库访问 在ASP中,利用ADO(ActiveX Data Objects)可以方便地访问数据库,很好地对数据库进行处理。笔者通过一个实例,具体阐述ASP利用ADO访问数据库的过程。在该实例中,用户希望通过网页能够访问服务器中的teacher数据库中的Information数据表,然后将该表中的所有数据显示在返回表格中,具体步骤如下: 1.定义数据源 在WEB服务器上,打开"控制面板",选中"ODBC",在"系统DSN"下选"添加",选定数据库种类、名称、位置等。该实例数据库种类是"SQL Server",名称是teacher。 2.创建ADO的对象 ASP技术中的ADO对象组件作为用户快速访问数据库的最简便方式,只要使用ADO中的两个最基本的对象Connection和Recordset对象,就能够实现对数据库的访问。具体来说,Connection对象的功能是建立和特定数据库的连接,而Recordset对象的功能则是取得从该数据库中返回的查询数据。首先,应为Connection和Recordset对象创建各自的对象实例: <%SetConn=Server.CreateObject("ADODB.Connection")%> <%SetRS=Server.CreateObject("ADODB.Recordset")%> 其中,RS和Conn分别是对象实例名称,用户可以自行定义。这样就成功地创建了两个空的Connection和Recordset对象。 3.建立与数据库的连接 使用Connection对象的Open方法建立与特定数据库的连接,Connection对象的Open方法有3个参数选项,分别为目标数据库的名称、登录用户名和口令,语法为ConnOpenConnectionString,UserID,Password。其中,ConnectionString参数表示与数据源建立的相关信息,如果用户已经成功建立了该数据库的DNS,就可以直接的使用该DNS。另外两个参数登录用户名和口令为可选项,如果用户在建立数据连接的DNS时已经设定了登录用户名和口令,就可以省略这两个参数项。在此,用户使用Connection对象的Open方法与teacher数据库建立连接,具体形式为<% Conn.Open "teacher"%>。 4.使用Recrodset对象获取数据 用户希望取得teacher数据库中Information数据表中的所有数据,因此使用最简单的"Select * From Information"即可。为了使代码更直观,容易修改和维护,建议用户将上述的SQL语句用某个变量代替。具体为 <% SQL="Select * From Information"%> 其中,SQL为变量名,用户可以自行定义,然后使用Connection对象中的Execute方法执行该SQL语句,并将结果输入到Recordset对象中,具体为: <% SetRS=Conn.Execute(SQL)%> 至此,ADO从数据库中查询到的所有数据被保存到Recordset对象中。 5.检验Recordset对象是否为空 在对Recordset对象中的数据进行进一步处理之前,建议用户最好验证一下是否确实将查询结果数据保存到了Recordset对象中。用户可以使用Recordset对象的BOF和EOF属性实现验证功能。BOF如果为真则代表数据指正位于首行数据之前,如果EOF为真则代表为数据指正位于末行数据之后,如果两者皆为真,则说明Recordset对象为空。具体代码为: <% if (RS.EOF and RS.BOF) then response.write "NO records found" end if %> 6.处理Recordset对象数据 在验证Recordset对象中确实含有查询返回数据之后,用户就可以按照自己的需要对数据进行响应的处理。通常较为常用的Recordset命令为: Recordset.Fields.Count:Recordset对象的列数; Recordset(I).Name:第I列名称,I由0到Recordset.Fields.Count-1; Recordset(I)第I列数据,I由0到Recordset.Fields.Count-1; Recordset("列名称"):读取指定列的数据; Recordset.MoveNext:数据指针下移一行; Recordset.MovePrev:数据指针上移一行; Recordset.MoveFirst:数据指针移到第一行; Recrodset.MoveLast:数据指针移到最末一行。 接下来的问题是如何将Recordset对象中的数据显示出来。如果用户希望以表格的形式显示数据,则首先需要ASP页面中建立表格标签:,然后用户需要将表中第一行的各列数据名称显示出来。在此用户通过Recordset(I).Name命令实现: <% FOR I=0 to RS.Fields.Count-1 %> <% =RS(I).Name %> <% Next %> 在设定了首行各列名称之后,用户就可以依次把相应的数据填充到表格当中。 <% DoWhileNot RS.EOF %> <%FOR I=0 to RS.Fields.Count-1 %> <% =RS(I)%> <% RS.MoveNext %> <% Loop %> 7.正确关闭对象 在完成对数据库数据的查询和输出之后,用户一定不要忘记关闭打开的对象。关闭已打开的对象,不仅能够释放更多的服务器资源,而且可以断开与数据库已建立的连接,从而有效地增强服务器和数据库对多用户的支持。用户可以使用对象的Close方法关闭对象,将其从内存中清除: <%RS.Close%> <%Conn.Close%> (作者单位:江苏省淮安技师学院)