ASPSQLServer开发与编程.docx
- 文档编号:8215863
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:60
- 大小:366.70KB
ASPSQLServer开发与编程.docx
《ASPSQLServer开发与编程.docx》由会员分享,可在线阅读,更多相关《ASPSQLServer开发与编程.docx(60页珍藏版)》请在冰豆网上搜索。
ASPSQLServer开发与编程
ASP/SQLServer开发与编程
ASP技术概述
基于Web的计算技术采用B/C/S(Browser/Client/Server)三层体系结构,如图14.1所示。
有代表性的技术是:
CGI(CommonGatewayInterface,公共网关接口)、WebServerAPI(如NSAPI、ISAPI)、JDBC及ASP(ActiveServerPages,活动服务器页面),本章主要介绍使用ASP技术操作SQL数据库。
1.ASP概述
ASP是微软公司随其IIS3.0推出的一种主要用于Web服务器访问数据库的技术,它提供使用VBScript或Jscript(Microsoft的JavaScript实现)的服务器端脚本环境,可用来创建和运行动态、交互的Web服务器应用程序。
2.IIS/Web服务器的配置
要调试ASP脚本程序,双击该文件图标或在浏览器中打开文件都是不行的,通过Web服务器端的处理才能在浏览器中浏览到结果页面。
在Windows2000Server/IIS中创建Web站点的方法如下:
首先启动Internet服务管理器:
开始管理工具Internet服务管理器,Internet服务管理器界面如图14.2所示。
在“管理Web站点”上单击鼠标右键,选择“新建”“站点”,依次输入站点名、选择站点IP地址及端口号、指定站点主目录路径以及用户对站点的访问权限,站点即创建完成。
此时,在Internet服务管理器中可见新建的站点(例如test1)及其内容,如图14.3所示。
3.ASP使用的脚本语言
ASP中可嵌入的脚本语言可以是VBScript和JScript,此外,还可通过plug-in方式,使用由第三方提供的脚本语言,如Perl、Tel等。
ASP的内建对象
ASP对象是特别为Web页面设计提供的,这些对象可以搜集及存储随浏览器发送的信息、响应浏览器等。
ASP内建对象列于表14.1中
对象名
描述
Server
提供服务器的信息
领导机构,权威部门
Application
记录不同网页的共享信息
档案室
Session
记录来访用户的信息
接待处、售后服务部
Request
获取浏览器信息
销售部,信息采集
Response
发送用户的信息
发送处
ObjectContext
提交或终止由ASP脚本启动的事务
运行控制部
ASPError
捕捉ASP错误,返回错误描述
质量检查处
1.Response对象(发送处)
使用Response对象可以控制发送给用户的信息,包括直接发送信息到浏览器、重定向到其他URL或设置Cookie值。
Response对象共有5个属性和8个方法,在程序设计中,通常使用Response的Write方法向浏览器传送响应。
名称
类别
描述
Write
方法
将指定的内容写入页面文件
Buffer
属性
指示缓冲页面是否完成
Status
属性
返回的HTTP服务器状态
AppendHeader
方法
添加或更新HTML头部的内容
Clear
方法
清除缓冲的HTML输出
End
方法
停止处理页面并返回当前结果
Redirect
方法
通知浏览器连接到指定的URL
2.Request对象(销售部,信息采集)
Request基本上是与Response相对应的对象,其作用是用于读取浏览器的信息。
Request对象又包含5个对象集合,这些对象集合的值是只读的,表14.3列出了这5个对象集合的名称和描述。
名称
描述
Cookies
发送到浏览器或来自浏览器的Cookies信息
ClientCertificate
浏览器的权限验证值
Form
发送到浏览器或浏览器发来的表单值
QueryString
HTTP查询串中的变量值
ServerVariable
HTTP环境变量的值
3.Server对象(领导部门,权威信息)
Server是最基本的ASP对象,它有一个属性ScriptTimeout和4个方法,表14.4列出了Server对象的属性和方法。
名称
类别
描述
ScriptTimeout
属性
脚本终止前服务器允许脚本运行的时间片长度,缺省值为90秒
CreateObject
方法
创建对象或服务器组件的实例
HTMLEncode
方法
HTML编码串
MapPath
方法
转换虚拟路径为物理路径
URLEncode
方法
URL编码串
4.Application对象(档案室)
方法是:
Application(“变量名”)=变量名或SetApplication(“对象名”)=对象名
当下次执行该ASP文件时,用下面的语句就可以恢复出变量或对象的值:
变量名=Application(“变量名”)或Set对象名=Application(“对象名”)
必须锁定Count:
Application.Lock
Application(“Count”)=Application(“Count”)+1
Application.UnLock
Application对象还提供了两个事件驱动接口,是OnStart和OnEnd事件。
5.Session对象(档案室)
Session对象与Application对象一样也是各ASP文件共享的对象,但两者的区别是,各个用户共享一个Application对象,而每个用户却可以拥有自己的Session对象,Session对象只在不同页面之间共享信息。
ADO数据库接口简介
1.ADO访问SQLServer的编程接口
ADO是一种功能强大的数据库应用程序接口,通过ADO访问SQLServer数据库的编程接口如图14.4所示。
2.ADO编程模型
ADO编程模型由Connection、Command、Recordset三种对象构成。
(1)Connection对象
用于建立与数据源的连接,通过连接可从应用程序访问数据源;
(2)Command对象
在建立Connection对象后,通过Command对象可对数据源中的数据进行各种操作,如查询、添加、删除、修改等。
(3)Recordset对象
代表某一连接表的记录集或Command对象的操作结果。
ADO是采用层次框架实现的,其层次结构如图14.5所示。
ASP访问数据库简介
使用ASP技术访问数据库的处理过程如图14.6所示。
在ASP中使用ADO对象
在ASP中引用ADO对象,要加上前缀“ADODB”。
例如,下面的语句将创建一个Recordset对象:
<%
Setrs=Server.CreateObject(“ADODB.Recordset”)
%>
几个常用的ADO对象列于表14.5中。
对象名
描述
Connection
到数据源的连接
Command
可被数据源执行的命令
Error
数据源返回的错误信息
Field
一个Recordset对象的列
Parameter
命令参数
Recordset
数据源返回的记录集
1.Connection对象
<%'创建一个ADOConnection对象
Setcn=Server.CreateObject("ADODB.Connection")
'指定OLEDB提供者---驱动程序
cn.Provider="sqloledb"
'赋予OLEDB连接串
ProvStr="Server=USER1;Database=XSCJ;UID=lo;PWD=l123;"
cn.OpenProvStr
Response.Write("
"&cn.Attributes)
Response.Write("
"&cn.CommandTimeout)
Response.Write("
"&cn.ConnectionString)
Response.Write("
"&cn.CursorLocation)
Response.Write("
"&cn.DefaultDatabase)
Response.Write("
"&cn.IsolationLevel)
Response.Write("
"&cn.Provider)
Response.Write("
"&cn.Version)
%>
本例在连接成功建立后,用ASP对象Response向浏览器返回该连接的属性,该程序的运行结果如图14.7所示。
Connection对象有6个方法和9个属性,列于下表。
方法名
描述
Open
打开一个数据源的连接
Close
关闭数据源的连接
Execute
在数据源上执行一个命令,返回一个结果集
BeginTrans
使数据源开始一个新处理
CommitTrans
结束当前处理并保存对数据源的修改
RollBackTrans
结束当前处理并取消对数据源的修改
属性名
访问属性
描述
CommandTimeout
R/W
等待命令执行的时间(缺省值为30秒)
ConnectionString
R/W
若未传递参数给Open方法,则在ConnectionString中置入数据源连接串可达到同样的目的
ConnectionTimeout
R/W
等待连接数据源的时间(缺省值为15秒)
DefaultDatabase
R/W
当未指定数据库名时所连接到的数据库
Provider
R/W
为连接提供数据的提供者名---驱动程序
Version
R
ADO版本号
2.Recordset对象
Recordset对象是对结果集的封装,其数据结构可认为与表相同,Recordset(若不为空)中的数据在逻辑上由行和列组成。
Recordset对象有比较多的属性和方法,将它们分别列于下表中。
属性名
访问属性
描述
AbsolutPage
R/W
结果集的当前记录位置所在的页号
AbsolutPosition
R/W
结果集的当前记录号
ActiveConnection
R/W
当前Connection对象
BOF
R
若当前位置在Recordset的首部,其值为真,否则为假
EOF
R
若当前位置在Recordset的尾部,其值为真,否则为假
PageCount
R
Recordset所包含的页数
MaxRecords
R/W
指定结果集的最多记录数,缺省值为0,表示不限制大小
PageSize
R/W
一个页面所包含的记录数
RecordCount
R
Recordset中的记录数
Recordset对象的常用方法
方法名
描述
Addnew
向Recordset中添加新记录
CancelUpdate
在执行Update方法之前取消对记录的修改
Clone
创建一个当前Recordset的拷贝
Close
关闭与Recordset的连接
Delete
删除当前记录
GetRows
从Recordset及记录在数组中的位置得到记录号
Move
将当前位置移动到指定记录
MoveFirst
将当前位置移动到第一条记录
MoveLast
将当前位置移动到最后一条记录
MoveNext
将当前位置移动到下一条记录
MovePrevious
将当前位置移动到前一条记录
Open
打开与数据源连接的新的Recordset对象
Requery
再执行一次查询
Support
判别Recordset是否支持当前的方法或属性
Update
修改当前记录
UpdateBatch
成批修改记录
本例的运行结果如图14.8所示。
创建Recordset对象还有另一种方法:
Setrs=Server.CreateObject(“ADODB.Recordset”)
rs.OpenT-SQL语句,Connection对象,Recordset类型,锁定类型
如上例中,我们可以把语句Setrs=cn.Execute("select*fromXS")替换为:
Setrs=Server.CreateObject("ADODB.Recordset")
rs.Open"Select*fromXS",cn,adOpenStatic
这种方法还有另一种写法:
Setrs=Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection=cn
rs.Open"Select*fromXS",,adOpenStatic‘此时可省略连接参数
Recordset对象的Open方法有4个参数:
(1)SQL语句,是形成结果集的语句。
若结果集由表中所有记录构成,则可直接使用表名,这个规则也适用于Execute方法。
例如Setrs=cn.Execute("select*fromXS")等价于
Setrs=cn.Execute(“XS”)。
(2)Connection对象:
到所访问数据源的连接。
(3)Recordset类型:
指结果集的读写属性,有四种值:
AdOpenForward—只读,只向前,数值为0;
AdOpenStatic—只读,当前记录指针可前后移动,数值为3;
AdOpenKeyset—读写,当前记录指针可前后移动,数值为1;
AdOpenDynamic—读写,当前记录指针可前后移动,数值为2。
AdOpenKeyset与AdOpenDynamic的区别在于,使用AdOpenKeyset将无法查看到其他用户对数据的更改,而使用AdOpenDynamic可查看到其他用户对数据的更改。
(4)锁定类型:
指出对结果集中的数据采用的锁定类型,有以下四种值:
adLockReadOnly—只读锁,为默认值,数值为1;
adLockPessimistic—悲观锁定,数值为2;
adLockOptimistic—乐观锁定,数值为3;
adLockBatchOptimistic—乐观批锁定,数值为4。
●引用字段数据的方法
方法一rs.Fields(i).Value
这种格式在前面的例子中已经用过,表示引用第i个字段的数据。
可简化为rs(i)。
方法二rs.Fields(字段名).Value
例如:
rs.Fields(“学号”).Value,rs.Fields(“姓名”).Value
这种格式可读性比第一种要好。
这种格式还有两种简化形式:
①rs.Fields(“字段名”),如rs.Fields(“学号”)。
②rs(“字段名”),如rs(“姓名”)。
●数据增加
例如向XS数据库增加一条记录:
rs.AddNew‘假设已经创建了记录集rs,用AddNew要求增加一条记录
rs(“学号”)=“101116”‘逐字段设置值
rs(“姓名”)=“王小明”
rs(“专业名”)=“计算机”
rs(“性别”)=true
rs(“出生时间”)=1978-1-31
rs(“总学分”)=40
rs.Update‘写入数据库
●数据修改
修改结果集中数据,首先要用MoveNext等移动记录指针的方法将当前记录指针移动到要修改的记录位置,然后直接设置字段的新值,最后调用Update方法将修改了的数据写入数据库。
例如,下列语句将当前记录的总学分改为50:
rs(“总学分”)=50
rs.Update
数据修改与数据增加操作都可以用CancelUpdate方法取消。
●数据删除
使用Recordset对象的Delete方法可将结果集中的当前记录删除。
如:
rs.Delete
将删除rs中的当前记录。
●数据分页显示
当结果集中的记录数比较多时,采用分页显示的方式可使结果显示结构清晰,并能使用户有选择地查看信息。
【例14.2】建立与数据库XSCJ的连接,返回XS表的所有记录,在浏览器中以表格形式进行分页显示。
●文件page.asp
--#includefile="adovbs.inc"-->
--#includefile="ShowPage.asp"-->
<%
Setcn=Server.CreateObject("ADODB.Connection")
cn.Provider="sqloledb"
ProvStr="Server=USER1;Database=XSCJ;UID=lo;PWD=l123;"
cn.OpenProvStr
Setrs=Server.CreateObject("ADODB.Recordset")
rs.Open"Select*fromXS",cn,adOpenStatic
%>
<%
rs.PageSize=8'设置rs的页的大小为8条记录
Page=CLng(Request("PageText"))
IFPage<1THENPage=1
IFPage>rs.PageCountTHENPage=rs.PageCount
ShowPagers,Page
%>
<%
IFPage<>1THEN
Response.Write" PageText=1>第一页" Response.Write" PageText="&(Page-1)&">上一页" ENDIF IFPage<>rs.PageCountTHEN Response.Write" PageText="&(Page+1)&">下一页" Response.Write" PageText="&rs.PageCount&">最后一页" ENDIF %> 输入页号: 总页数:
●文件ShowPage.asp
<%
SubShowPage(rs,Page)'显示结果集中的一页
Response.Write"
Response.Write"
FORi=0TOrs.Fields.Count-1
Response.Write"
NEXT
Response.Write""
rs.AbsolutePage=Page
FORi=1TOrs.PageSize
Response.Write"
FORj=0toTO.Fields.Count-1
Response.Write"
NEXT
Response.Write"
rs.MoveNext
IFrs.EOFTHENExitFOR'若已到末尾则结束循环
NEXT
Response.Write"
EndSub
%>
该程序的执行结果如图14.9所示。
结合Session对象
<%
Session.Timeout=60'设置Session对象的存在时间,单位是分钟
IFNOTIsObject(Session("XSCJ_cn"))THEN
'判断连接是否已经存在,若不存在,则建立连接
Setcn=Server.CreateObject("ADODB.Connection")
cn.Provider="sqloledb"
ProvStr="Server=USER1;Database=XSCJ;UID=lo;PWD=l123;"
cn.OpenProvStr
SetSession("XSCJ_cn")=cn'将cn对象保存在Session对象中
ELSE'连接已经存在,只需从Session对象中恢复出来
Setcn=Session("XSCJ_cn")
ENDIF
IFNOTIsObject(Session("XSCJ_rs"))THEN
Setrs=Server.CreateObject("ADODB.Recordset")
rs.Open"Select*fromXS",cn,adOpenStatic
SetSession("XSCJ_rs")=rs
ELSE
Setrs=Session("XSCJ_rs")
ENDIF
%>
Command对象
命令类型的设置值可以是:
adCmdText(值为1),其中命令是一个查询或数据定义语句;
adCmdTable(值为2),其中命令是一个表名;
adCmdStoredProc(值为4),其中命令是一个服务器端存储过程的引用;
adCmdUnknow(值为8),其中命令是一个未知命令。
例如,下面的程序代码可使服务器执行SQL语句:
Setcmd=Server.CreateObject(“ADODB.Command”)
Setcmd.ActiveConnection=cn;
sql=“select*fromXSwhere总学分>40”
cmd.CommandText=sql
Setrs=cmd.Execute
利用Command对象使服务器执行SQL语句时,先要创建Command对象,然后设置Command对象的ActiveConnection和CommandText属性值,最后才引用Execute方法使服务器执行设定的SQL语句。
属性名
访问属性
描述
ActiveConnection
R/W
当前Connection对象
CommanText
R/W
命令串
CommanTimeout
R/W
等待命令执行的时间,缺省值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ASPSQLServer 开发 编程
![提示](https://static.bdocx.com/images/bang_tan.gif)