ASPSQLServer开发与编程文档格式.docx
《ASPSQLServer开发与编程文档格式.docx》由会员分享,可在线阅读,更多相关《ASPSQLServer开发与编程文档格式.docx(60页珍藏版)》请在冰豆网上搜索。
![ASPSQLServer开发与编程文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/29/0d36e2b9-be2a-4c9c-85c6-998a75094932/0d36e2b9-be2a-4c9c-85c6-998a750949321.gif)
使用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对象
html>
body>
%'
创建一个ADOConnection对象
Setcn=Server.CreateObject("
ADODB.Connection"
)
'
指定OLEDB提供者---驱动程序
cn.Provider="
sqloledb"
赋予OLEDB连接串
ProvStr="
Server=USER1;
Database=XSCJ;
UID=lo;
PWD=l123;
"
cn.OpenProvStr
Response.Write("
br>
&
cn.Attributes)
cn.CommandTimeout)
cn.ConnectionString)
cn.CursorLocation)
cn.DefaultDatabase)
cn.IsolationLevel)
cn.Provider)
cn.Version)
/body>
/html>
本例在连接成功建立后,用ASP对象Response向浏览器返回该连接的属性,该程序的运行结果如图14.7所示。
Connection对象有6个方法和9个属性,列于下表。
方法名
Open
打开一个数据源的连接
Close
关闭数据源的连接
Execute
在数据源上执行一个命令,返回一个结果集
BeginTrans
使数据源开始一个新处理
CommitTrans
结束当前处理并保存对数据源的修改
RollBackTrans
结束当前处理并取消对数据源的修改
属性名
访问属性
CommandTimeout
R/W
等待命令执行的时间(缺省值为30秒)
ConnectionString
若未传递参数给Open方法,则在ConnectionString中置入数据源连接串可达到同样的目的
ConnectionTimeout
等待连接数据源的时间(缺省值为15秒)
DefaultDatabase
当未指定数据库名时所连接到的数据库
Provider
为连接提供数据的提供者名---驱动程序
Version
R
ADO版本号
2.Recordset对象
Recordset对象是对结果集的封装,其数据结构可认为与表相同,Recordset(若不为空)中的数据在逻辑上由行和列组成。
Recordset对象有比较多的属性和方法,将它们分别列于下表中。
AbsolutPage
结果集的当前记录位置所在的页号
AbsolutPosition
结果集的当前记录号
ActiveConnection
当前Connection对象
BOF
若当前位置在Recordset的首部,其值为真,否则为假
EOF
若当前位置在Recordset的尾部,其值为真,否则为假
PageCount
Recordset所包含的页数
MaxRecords
指定结果集的最多记录数,缺省值为0,表示不限制大小
PageSize
一个页面所包含的记录数
RecordCount
Recordset中的记录数
Recordset对象的常用方法
Addnew
向Recordset中添加新记录
CancelUpdate
在执行Update方法之前取消对记录的修改
Clone
创建一个当前Recordset的拷贝
关闭与Recordset的连接
Delete
删除当前记录
GetRows
从Recordset及记录在数组中的位置得到记录号
Move
将当前位置移动到指定记录
MoveFirst
将当前位置移动到第一条记录
MoveLast
将当前位置移动到最后一条记录
MoveNext
将当前位置移动到下一条记录
MovePrevious
将当前位置移动到前一条记录
打开与数据源连接的新的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
这种方法还有另一种写法:
rs.ActiveConnection=cn
rs.Open"
,adOpenStatic‘此时可省略连接参数
Recordset对象的Open方法有4个参数:
(1)SQL语句,是形成结果集的语句。
若结果集由表中所有记录构成,则可直接使用表名,这个规则也适用于Execute方法。
例如Setrs=cn.Execute("
)等价于
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"
-->
ShowPage.asp"
head>
title>
分页浏览数据库<
/title>
/head>
h2align="
center"
>
学生信息表<
/h2>
hr>
%
rs.PageSize=8'
设置rs的页的大小为8条记录
Page=CLng(Request("
PageText"
))
IFPage<
1THENPage=1
IFPage>
rs.PageCountTHENPage=rs.PageCount
ShowPagers,Page
divalign=center>
formaction="
page.asp"
method="
get"
1THEN
Response.Write"
ahref=page.asp?
PageText=1>
第一页<
/a>
"
PageText="
(Page-1)&
上一页<
ENDIF
rs.PageCountTHEN
Response.Write"
(Page+1)&
下一页<
rs.PageCount&
最后一页<
p>
输入页号:
inputtype=textname="
size=3>
总页数:
fontcolor="
red"
%=Page%>
/<
%=rs.PageCount%>
/font>
/p>
/form>
/div>
●文件ShowPage.asp
SubShowPage(rs,Page)'
显示结果集中的一页
Center>
tableborder=1>
trbgcolor=#dd2222>
FORi=0TOrs.Fields.Count-1
td>
rs.Fields(i).Name&
/td>
NEXT
/tr>
rs.AbsolutePage=Page
FORi=1TOrs.PageSize
tr>
FORj=0toTO.Fields.Count-1
rs.Fields(j).Value&
rs.MoveNext
IFrs.EOFTHENExitFOR'
若已到末尾则结束循环
/table>
/center>
EndSub
该程序的执行结果如图14.9所示。
结合Session对象
Session.Timeout=60'
设置Session对象的存在时间,单位是分钟
IFNOTIsObject(Session("
XSCJ_cn"
))THEN
判断连接是否已经存在,若不存在,则建立连接
Setcn=Server.CreateObject("
cn.Provider="
ProvStr="
cn.OpenProvStr
SetSession("
)=cn'
将cn对象保存在Session对象中
ELSE'
连接已经存在,只需从Session对象中恢复出来
Setcn=Session("
XSCJ_rs"
Setrs=Server.CreateObject("
)=rs
ELSE
Setrs=Session("
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语句。
CommanText
命令串
CommanTimeout
等待命令执行的时间,缺省值