第 14章 使用 Asp开发 SQL
Server应用程序
ASP的运行环境与工作原理
ASP的内置对象
ASP应用程序的开发过程及实现
14.1 ASP概述
14.2 ASP应用程序举例分析
14.3 ASP应用程序的开发过程
14.4 ASP应用程序的实现
14.1 ASP概述
ASP,全称 Active Server Page,它提供了一个在 服务器端 执行脚本指令的环境 ( 包括 HTML,VBScript,JavaScript
等 ),通过这种环境,用户可以创建和运行 动态的 Web应用程序 。 由于所有的程序都在服务器端执行,这样就大大减轻了客户端浏览器的负担,提高了交互速度 。 利用 ASP不仅能够产生动态的,交互的,高性能的 Web应用程序,而且可以进行复杂的数据库操作 。 ASP本身包含了 VBScript和 JavaScript引擎,
使得脚本可以直接嵌入 HTML中,而且还可以通过 ActiveX控件实现更为强大的功能 。

14

A
s
p
14.1 ASP概述
14.1.1 ASP的特点
无需编译即可直接运行。
易于生成。
源程序码不会外漏。
独立于浏览器。
面向对象。
14.1.2 ASP的运行环境和工作流程
1,ASP的运行环境
2,ASP的工作原理第
14

A
s
p
浏览器 Web服务器 (IIS/PWS)脚本引擎 ADO对象 ODBC管理器各类 ODBC驱动程序数据库
HTTP协议要求下载文件文件下载
14.1.2 ASP的运行环境和工作流程
3,ASP的文件结构一个 ASP文件包括以下内容,HTML标记、文本显示内容、
脚本程序 VBScript或 JavaScript、服务器端包含指令
( Server-Side Include,SSI)等。
ASP页面中一般包含脚本代码。脚本代码是 ASP引擎所能识别的程序代码。与纯 HTML标记不同,脚本代码指示 Web服务器执行的操作,而 HTML标记只是简单地格式化文本、读取图形、
视频文件及实现超链接。脚本代码需通过定界符与普通文本或
HTML标识区别开来。定界符是一串字符,它标志了脚本代码的开始或结束。 HTML使用定界符,<”和,>”,ASP使用定界符
,<%”和,%>”加入脚本命令。
(1) 声明脚本语言
(2) 在 ASP中使用脚本语言第
14

A
s
p
【 例 14-1】 使用客户端脚本
【 例 14-1】 chap14-1.asp程序中使用了客户端脚本,其源程序代码如下:
<html>
<head><title>在 ASP中使用客户端脚本 </title>
<Script Language=VBScript>
<!--
Option Explicit
Dim num,temp
Document.Write "求任意整数 (1- 100)的阶乘 "
num=InputBox("请输入一个 1- 100的整数,")
Dim i,k
k=1
For i=1 to num
k=k*i
next
Document.Write "<br>"&num&"!="&k
-->
</Script>
</head>
<body></body>
</html>

14

A
s
p
【 例 14-2】 使用 服务器端脚本
【 例 14-2】 chap14-2.asp程序中使用了服务器端脚本,其源程序代码如下:
<html>
<head><title>在 ASP中使用服务器端脚本 </title>
<% '服务器端脚本
FUNCTION factorial(Num)
Dim i
factorial = 1
For i=1 to Num
factorial = factorial*i
next
END FUNCTION
%>
</head>
<body>
<% '服务器端脚本
Num = 12
Response.Write "您所求的数的阶乘为,<br>"&Num&"!="&factorial(Num)
%>
</body></html>

14

A
s
p
4,ASP文件的创建
ASP文件是一个以,asp为扩展名的文件文件,因此可以使用任何一种纯文本编辑器 (如 WINDOWS下的记事本,
EditPlus)编写 ASP的程序代码,然后以,asp作为文件的扩展名存盘即可 。
ASP文件创建完成后,必须将该文件上传到 Web服务器上才能有效 。 当浏览器请求该网页时,Web服务器根据请求网页的扩展名,ASP确定该文件是一个 ASP文件,从而对该文件中的服务器端脚本代码进行编译并执行,生成并返回
HTML页面 。

14

A
s
p
14.1.3 ASP的内置对象
ASP本身提供了可在脚本中使用的一些对象,这些对象并不需要经过任何声明和建立过程就可在脚本中直接使用,因此称这些对象为 ASP的内置对象,它们包括,Request对象,
Response对象,Server对象,Session对象,Application对象及 Object Context对象 。
1,Request对象
Request对象的作用是在服务器端接受并得到从客户端浏览器提交或上传的信息 。 Request 对象可以访问任何基于
HTTP 请求传递的所有信息,包括从 HTML表格中通过 GET或
POST方法传送过来的表单数据,Cookie和服务器变量值 。
Request对象的使用语法如下:
Request[.collection | property | method] (Variable)
其中,collection为集合名; property为属性名;
method为方法名; Variable为变量名 。

14

A
s
p
(1) Form集合
Form数据集合是 Request对象中最常用的数据集合,可以取得通过 POST方法发送的客户端表单中各个表单元素的内容值 。 这些表单对象都是由 HTML的 <FORM>与 </FORM>标记符标记的,包括单行文本 ( Text),文本块 ( TextArea),复选框
( CheckBox),单选按钮 ( Radio),下拉式选择框 ( Select)
或按钮 ( Button) 等 。 其语法如下:
Request.Form(Element)[(Index) |,Count]

14

A
s
p
【 例 14-3】 利用 Request对象的 Form数据集合
1) 建立一个 HTML的表单输入程序,其存储文件名为 chap14-3.htm,
源程序如下:
<html>
<head><title>HTML的表单输入程序 </title></head>
<body>
<form method=“POST” action=“chap14-4.asp”>
<p>姓名,<input type=“text” name=“UserName” size=“20”></p>
<p>性别,<select name=“UserSex” size=“1”></p>
<option value=“男,>男 </option>
<option value=“女,>女 </option>
</select>
<p> 电子邮件信箱,<input type=“text” name=“UserEmail”
size=“20”></p>
<p><input type=“submit” value=“确定,> <input type=“reset”
value=“取消,>
</form>
</body></html>

14

A
s
p
【 例 14-3】 利用 Request对象的 Form数据集合
2) 建立一个处理表单的 ASP程序,其存储文件名称为
chap14-4.asp。 这个 ASP程序的主要目的是利用 Request对象的 Form数据集合来取得用户在表单中所填写的内容,其程序如下:
<html><body>
<p>您的姓名是 <%=Request.Form(“UserName”)%>。 </p>
<p>您是一位 <%=Request.Form(“UserSex”)%>性朋友 。 </p>
<p>您的 E-Mail是 <%=Request.Form(“UserEmail”)%>。 </p>
</body></html>
在浏览器的 URL中浏览 chap14-3.htm文件,系统首先会显示一个如图 14-4所示的 HTML表单输入界面,要求输入姓名,
性别及电子邮件等数据,输入完成单击,确定,按钮,按
chap14-3.htm文件中的指定,系统将所用户输入的数据提交给
chap14-4.asp表单处理程序进行数据处理,因 chap14-3.htm中使用 POST方法发送表单数据,故 chap14-4.asp程序中使用
Request.Form集合来接收数据 。

14

A
s
p
(2) QueryString集合
QueryString数据集合检索 HTTP查询字符串中变量的值 。 HTTP查询字符串由问号,?,后面的值指定 。
QueryString数据集合在使用上与 Form数据集合没有太大区别,最主要的不同在于前者既可以直接在浏览器的 URL中输入查询字符串,也可通过表单的 GET
方法来传送数据,而后者只能通过表单的 POST方法来传递数据 。
Request.QueryString集合的语法格式如下:
Request.QueryString (Variable)[(Index) |.Count]

14

A
s
p
2,Response对象与 Request获取客户端 HTTP 信息相反,Response对象用来控制发送给用户的信息,包括直接发送信息给浏览器,重定向浏览器到另一个 URL或设置 cookie的值 。
Response对象的使用语法如下:
Response.collection | property | method
( 1) Write方法
Response对象的 Write方法将指定的字符串信息输出至客户端,语法为:
Response.write 任何数据类型表达式或变量
<%Response.Write,现在时间是:,&Now&“<br>” '显示日期时间
%>
( 2) Redirect方法
Redirect方法使浏览器立即重定向到程序指定的 URL,从而显示新的网页 。
Response.Redirect URL字符串第
14

A
s
p
3,Server对象
Server对象允许用户取得服务器提供的各项功能 。
Server对象的使用语法如下:
Server,property | method
( 1) ScriptTimeout属性
( 2) CreateObject方法
Server对象的 CreateObject方法是 Server对象最常用,最重要的方法,该方法允许客户端建立一个 ActiveX Server组件实例,其所建立的组件实例会随着服务器端完成 ASP网页的处理而自动被释放 。 语法如下:
Set 对象实例名称 = Server.CreateObject(“ActiveX 控件,)
例如,建立一个 ADO连接组件的实例,可以使用代码:
<% Set Conn=Server.CreateObject(“ADODB,Connection”) %>
当所创建的对象不再需要时,应释放其所占的系统资源,可以使用如下代码:
<% Set Conn = Nothing %>

14

A
s
p
4,Session对象使用 Session对象可以存储特定的用户会话所需的信息,
这些信息是该特定用户的私有信息 。
当用户请求应用程序中的某一 Web页面时,ASP要检查
HTTP头信息,查看报文中是否有名为 ASPSESSIONID的 Cookie
发送过来,如果有,表明该用户还没有会话,则 Web服务器将自动启动新的会话,并为该会话创建一个 Session对象,生成一 个 全 局 惟 一 的 SessionID 值,再 把 这 个 值 作 为 新
ASPSESSIONID Cookie值发送到客户端,正是使用这种 Cookie,
可以访问存储在服务器上的属于客户的信息 。
Session对象的使用语法如下:
Session[,property | method] (Variable)
( 1) SessionID属性
SessionID属性返回 Session的标识 ID。 在创建会话时,Web
服务器为每一个 Session会话产生一个单独的标识号 ID,该 ID
以长整型数据表示 。

14

A
s
p
14.1.4 ASP的内置组件
ASP中提供了许多 ActiveX组件,用于增强 Web应用程序的功能,与开发数据库应用程序有关的是 Database Access组件 。
在动态网页或动态站点中,Web服务器上运行的 Web应用程序进行的最常见和最实用的操作就是访问服务器端的数据库 。
而 ASP内嵌的 Database Access组件就能轻而易举地通过 ADO
( ActiveX Data Objects) 访问存储在服务器端各种类型数据库中的信息 。
ActiveX Data Objects(ADO)中拥有七个对象,它们分别是 Connection,Command,Recordset,Field,Property、
Parameter,Error。

14

A
s
p
1,Connection(连接)对象当需要对服务器端的数据库进行操作时,首先应与服务器端的数据库建立连接 。 Connection对象就是用来建立和管理应用程序与数据源之间的连接 。
在使用 Connection 对 象 前,必 须 先 调 用
Server.CreateObject方法创建该对象,否则 Connection对象是不能使用的 。
<% Set conn = Server.CreateObject("ADODB.Connection") %>
Connection对象创建完成后,在连接数据库之前还需要对
Connection对象的属性进行必要的 设置,以便对连接进行配置 。
( 1) ConnectionTimeOut属性定义与数据源建立连接时可以等待的最长时间,单位是秒,
该属性默认值为 15秒 。

14

A
s
p
1,Connection(连接)对象
( 2) ConnectionString属性
ConnectionString属性包含了用于与数据源进行连接的必要信息 。 它支持以下几个参数:
l Provider,指定用于连接的数据提供者的名称 。
l Data Source / DSN,指定需连接的数据源名称 。
l User ID / UID:指定打开这个连接的用户 ID(身份标识 )。 l Password / PWD:指定连接到数据库的用户密码 。
<% Connection.ConnectionString="DSN=EduDSN;UID=Useredu;
PWD=edu" %>
( 3) DefaultDatabase属性
DefaultDatabase属性定义了 Connection对象连接时的默认数据库 。
( 4) Mode属性
Mode属性用来设置或取得 Connection对象连接的权限 。

14

A
s
p
1,Connection(连接)对象
( 5) Open方法创建 Connection对象并设置必要的参数后,Connection
对象还不能使用,还必须调用 Connection对象的 Open方法来建立与数据源的连接 。
<% Set conn=Server.CreateObject("ADODB.Connection")
'创建连接对象
conn.ConnectionString="DSN=EduDSN; UID=Useredu; PWD=edu"
conn.Open %>
( 6) Execute方法在创建 Connection 对象并将它和一个数据库成功地建立连接后,用户可以使用 SQL语句或存储过程直接与数据库对话,
可以完成数据的插入,更新和删除操作,这些操作不返回数据 。
但当利用 Connection 对象返回数据时,只能得到一个基本的游标即只能读且只能向前的游标 。
[Set RecordSet =]Connection.Execute(CommandText
[,RecordAffected,[Options]])

14

A
s
p
1,Connection(连接)对象
( 7) Close方法当与数据源的连接完成任务后,应调用 Close方法关闭与数据源的连接,释放与该连接有关的系统资源 。
在使用 Close方法关闭与数据源的连接后,为了释放 Connection对象本身,需要给已经创建的
Connection对象赋值 Nothing,使 Connection对象彻底从内存中消失:
<% set conn=Nothing %>

14

A
s
p
2,Recordset对象
Recordset 对象是 ADO的一个最为重要与复杂的对象,存放的是来自表或查询结果的记录集,该记录集按记录 (行 )和字段 (列 )的形式构成 。
在使用 Recordset对象之前,必须先创建该
Recordset对象 。 可以使用下列脚本创建 Recordset对象:
<% Set rs=Server.CreateObject("ADODB.Recordset")
'创建 Command对象 %>
通常在使用 Recordset对象之前需要对 Recordset
对象的属性进行必要的设置,以便对该对象进行相应操作 。

14

A
s
p
2,Recordset对象
( 1) ActiveConnection属性该属性用来设置或返回当前活动的 Connection对象所使用的对象或连接字符串 。
<% Set rs.ActiveConnection = Conn ' 设置
Connection对象 %>
( 2) CursorType属性该属性决定 Recordset对象所使用的游标类型 。 不同的游标类型决定了对数据库所能做的操作 。
( 3) LockType属性该属性决定用户是否可以更新数据以及编辑过程中对记录使用的锁定类型 。
( 4) BOF属性和 EOF属性
( 5) RecordCount属性该属性返回 Recordset对象中记录的个数,为一长整型值 。

14

A
s
p
2,Recordset对象
( 6) PageSize属性该属性定义 Recordset中一页所包含的记录数,为一长整型值 。
( 7) PageCount属性该属性用来返回 Recordset对象中包含的数据页数 。
( 8) Source属性该属性指示 Recordset对象中数据的来源 ( Command对象,
SQL语句,表的名称或存储过程 ) 。
( 9) Open方法该方法用来打开一个基于 ActiveConnection和 Source属性的 Recordset,还可以用来传递打开游标所需的所有信息 。
Open方法的语法格式如下:
Recordset.Open [Source[,ActiveConnection
[,CursorType[,LockType[,Options]]]]]

14

A
s
p
2,Recordset对象
( 10) Close方法在结束了 Recordset对象的操作后,可使用 Close方法释放所有关联的系统资源 。 。 使用 Close方法关闭 Recordset对象后,系统并没有将其占用的内存释放,要将对象从内存中完全删除,可将该对象变量设置为 Nothing。
( 11) MoveFirst,MoveLast,MoveNext和 MovePrevious方法将 Recordset对象中的当前记录指针移动到记录集的第一个记录,最后一个记录,后一个记录和前一个记录上 。
( 12) Move方法调用该方法可将当前记录集中的当前记录指针向前或向后移动若干个记录 。

14

A
s
p
14.2 ASP应用程序举例分析这里实现其中的四个功能模块-登录管理模块,学生信息管理模块,学生成绩管理模块和公用模块 。
登录管理模块用于完成学生,教师的系统登录 。 只有登录的用户才能查看相应的信息和修改相关的数据 。 如学生登录后,能查看本班所有课程的成绩,但不能修改成绩,可以修改本人的相关信息 (密码,电话等 );教师能查看所有班所有课程的成绩,但只能对本人任课班的对应课程的成绩有修改权 。 登录管理模块的登录部分放在主页 Default.asp中,如图 14-11
所示 。
学生信息管理模块用于完成学生信息的查询,修改,添加和删除操作,如图 14-12,图 14-13所示 。 在图 14-12所示的学生信息管理界面中,将学生信息进行了分页显示,单击相应的页码,则该页码所对应的学生信息将显示在页面上,单击记录后的,删除,超链接,则从数据库中删除该记录;单击,修改,超链接,则出现图 14-13所示的学生信息修改界面,修改完毕,单击,提交,按钮,将修改信息提交到数据库中 。

14

A
s
p
14.3 ASP应用程序的开发过程
ASP应用程序由若干个页面组成 。 每个 ASP页面的设计一般分为以下几个步骤,
1) 创建一个 ASP文件 。
2) 使用 HTML标识建立一个静态页面 。
3) 在静态页面的适当位置插入 Script脚本和 ASP脚本 。
4) 脚本中先创建 ADO的 Connection对象,并使用该对象连接数据库 。
5) 根据需要创建 ADO的 Recordset对象,并使用该对象访问数据库 。
6) 根据需要将 Recordset对象中返回的数据集在网页上显示或在网页的表单中供用户修改,添加或删除 。
7) 关闭并清除打开的对象 。
8) 文件存盘 。
将所有页面创建完成后,通过超链接将各个页面连接起来,
就组成了一个 ASP应用程序 。 最后将应用程序中的所有页面及文件上传到 Web服务器,就可在浏览器中通过主页浏览相应的页面,从而实现规定的任务 。

14

A
s
p
14.4 ASP应用程序的实现学校教务管理系统所用到的 ASP程序在网站上存放结构如下图所示
Default.asp
Function.Asp
ShowStudent.asp
UpdateStudent.asp
Grade.asp
Include/
Conn.Inc
adovbs.inc
ControlDate.Inc
主页 功能按钮学生信息 修改学生信息更新学生成绩连接数据库日期处理函数第
14

A
s
p
14.4 ASP应用程序的实现
14.4.1 公用模块的设计在 ASP应用程序中的每个页面,一般都需要通过 ADO连接数据库的操作 。 因此,本系统中设计了一个公用模块
Conn.Inc,用于执行连接数据库的操作 。
<% dim Conn
set Conn = Server.CreateObject("ADODB.Connection") '创建连接对象
Conn.ConnectionString = "DSN=EduDSN; UID=Useredu; PWD=edu“
Conn.Open ‘ 打开数据库连接 %>
程序中还需要处理日期,因此建立了 ControlDate.Inc文件,用来将年月日合成为一个合法的日期格式字符串 。
<% function CreateDate(ByVal SYear,ByVal SMonth,ByVal SDay)
SMonth=CInt(SMonth)
if SMonth<10 then SMonth="0"&SMonth
SDay=CInt(SDay)
if SDay<10 then SDay="0"&SDay
CreateDate = CStr(SYear)&"/"&SMonth&"/"&SDay
End Function%>

14

A
s
p
14.4.2 主页设计主页 Default.asp采用上中下部结构,如图 14-11
所示 。 上部是程序应用中进入各个功能模块的超链接;
中部显示系统的登录和日期信息;下部的左边是系统的登录窗口和重要信息通知区 。
为方便应用,使用 Function.Asp文件存放主页上部系统各功能模块的超链接 。

14

A
s
p
Function.Asp显示结果登录区
14.4.2 主页设计用户在登录区中选择用户类型,输入用户名和密码后,单击,确定,按钮,系统通过调用 checkform()
函数,确认用户输入了用户名和密码后,将用户类型,
用户名和密码传送到 79行中 Action参数所指定的文件
CheckUser.asp中进行确认 。
CheckUser.asp文件接收主页登录区中传递过来的登录表单数据,并根据需要进行身份验证,以确认用户登录信息的合法性 。

14

A
s
p
14.4.3 学生信息的管理学 生 信 息 的 管 理 由 两 个 页 面 组 成,
ShowStudent.asp和 UpdateStudent.asp,其浏览界面如图 14-12和图 14-13所示 。 其中 ShowStudent.asp用于显示查询到的学生信息,因查到的学生可能很多,
故使用了分页显示技术,本系统中系统管理员可以修改,删除和添加学生资料,学生可以修改本人的资料 。
在图 14-12界面,单击,添加,,,修改,和
,删除,按钮,程序调用 UpdateStudent.asp文件实现学生信息的添加,修改和删除工作 。

14

A
s
p
14.4.4 学生成绩的管理学生信息的管理由 Grade.asp页面组成,其浏览界面如图 14-14所示 。 登录的学生只能查看本班所有课程的成绩,不能查看其它班的成绩;登录的教师可以查看所有班所有课程的成绩,但只能修改自己任课的课程成绩 。

14

A
s
p