动态网站设计与开发第五章
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分页显示数据
• 为什么分页? • 分页显示示意图
• 分页显示数据的思想,首先显示第1页数据,并且 在下方提供页码链接,当客户选择页码时,仍然 传递到本文件,并显示新的一页
数据分页显示
<% Dim db,rs,strSql Set db=Server.CreateObject("ADODB.Connection") db.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("address.mdb") Set rs=Server.CreateObject("ADODB.Recordset") strSql ="Select * From users" rs.Open strSql,db,1 '注意参数设置 If Not rs.Bof And Not rs.Eof Then Dim page_no If Request.QueryString("page_no")="" Then page_no=1 Else page_no=Cint(Request.QueryString ("page_no")) '用Cint将字符串变为整数 End If rs.PageSize=2 '设置每页2条记录 rs.AbsolutePage=page_no '设置当前显示第几页 Dim I '该变量用来控制显示当前页记录 I=rs.PageSize Do While Not rs.Eof And I>0 '循环直到当前页结束或记录集结尾 I=I-1 Response.Write rs("name") & "<br>" '输出姓名字段值 rs.MoveNext Loop Response.Write "请选择数据页: " For I=1 To rs.PageCount If I=page_no Then '如是当前页,就不加超链接 Response.Write I & " " Else '如不是当前页,就加上超链接 Response.Write "<a href=‘9-8.asp?page_no=" & I & "'>" & I & "</a> " End If Next Else Response.Write "该记录集为空" End If %>
%>
使用表格来显示记录
<% Set conn = Server.CreateObject("ADODB.Connection") conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("Sample.mdb") Set rs = conn.Execute( "成绩单" ) %> <HTML> <body bgcolor="beige"> <center> <table border="4" bordercolor="orange"> <TR bgcolor="orange" align="middle"> <% For i=0 to rs.Fields.Count-1 Response.Write "<TD><font color=white><b>" & rs(i).Name & "</b></font></TD>" Next %> </TR> <% rs.MoveFirst ' 将目前的数据记录移到第一项 While Not rs.EOF ' 判断是否过了最后一项 Row = "<TR align=middle>" For i=0 to rs.Fields.Count-1 Row = Row & "<TD>" & rs(i) & "</TD>" Next Response.Write Row & "</TR>" rs.MoveNext ' 移到下一项 Wend %> </TABLE></CENTER> </BODY> </HTML>
recordset对象常见方法
属性/方法 说明
open
close MoveNext MovePrevious Move MoveFirst MoveLast Addnew Delete Update Cancelupdate
打开记录集
关闭记录集 移至当前目录的下一条记录 移至当前目录的上一条记录 将记录指针移到指定位置 将记录指针移到第一条记录处 将记录指针移到最后一条记录处 在记录集尾添加一条记录 删除当前记录 更新数据库数据 取消数据更新
• Adovbs.inc文件中包含着与ADO一起使用的常量定义清单,在安
装ASP时就安装在服务器中了,一般会在WINDOWS安装目录下 的ServicePackFiles/i386目录下。
LockType: Recordset对象的锁定类型
上锁类型 ADO 常量 描述
只读
消极锁定 积极锁定 批量更新
…..(对当前记录进行处理) Rs.movenext
loop
用来实现数据记录分页显示的属性
• • • •
Pagesize Pagecount Absolutepage Absoluteposition
说明: • 当给Absoluteposition赋值时,记录指针就会定位的相应 的记录位置上,使该记录成为当前记录。 • 当程序使用Absolutepage时,系统将对数据记录进行分页, 默认每页为10条记录, Absolutepage赋值为几,记录指 针就自动定位到第几页的第一条记录上。 • Absoluteposition=(Absolutepage-1)* Pagesize+页内位置
recordset对象作用
• 记录集是就象是一个二维的电子表格,每行是一 个记录,每个记录可分为多个列(字段,也称为域) • 记录指针所指向的记录为当前记录,缺省情况下 对记录集所做的操作是对当前记录进行的 • 利用它就可对记录进行相应处理,包括显示、添 加、删除、更新记录等。
关于记录集
• 保存了满足 查找条件的 所有记录。
3 rs(“gre”)= rs(“gre”)+10 rs(“toefl”)= rs(“toefl”)+50 进入锁定: rs.update 解除锁定
2进入锁定:rs(“gre”)= rs(“gre”)+10 rs(“toefl”)= rs(“toefl”)+50 rs.update 解除锁定
锁定类型的进一步说明
Getrows
Resync
从记录集取得多行数据
与数据库服务器同步更新
利用Recordset对象查询记录
<% Dim db,rs,strSql Set db=Server.CreateObject("ADODB.Connection") db.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("address.mdb") Set rs=Server.CreateObject("ADODB.Recordset") strSql ="Select * From users" rs.Open strSql,db Do While Not rs.Eof Response.Write rs(“name”) & vbTab & rs(“age”) & “<br>” rs.MoveNext Loop rs.Close Set rs=nothing db.Close Set db=nothing
动态网站设计与开发
第五章
5.3 ADO组件之 Connection对象
课程引入与回顾
• 数据库的各种访问技术 • 利用connection对象来与数据库建立连接, 并进行简单的数据库操作
目标
• 利用Recordset对象实现添加、删除或更新记录操作 • 利用Recordset对象实现数据记录的分页显示
•记录集的两个特殊位置:bof与eof
–(向前与向下移动、向后与向上移动)
wk.baidu.com
建立Recordset对象
• 标准语法:
– Set Recordset对象实例 =server.createobject(“ADODB.Recordset”) (Recordset对象实例 名假设为rs) – Rs.open [Source],[ActiveConnection],[CursorType],[LockType],[Options] 参数 Source ActiveConnection CursorType LockType Options 说明 Command对象名或SQL语句或数据表名 Connection对象名或数据库连接字符串 Recordset 对象记录集中的指针类型 ( 游标类 型)—详见下表 Recordset对象的锁定类型—详见下表 Source类型—详见下表
关于记录指针及记录数的属性
• Recordcount(在指针类型为键盘指针或静态指针时可用) • Bof • Eof
• 在记录集为空的情况下,bof与eof同时为真 • 利用记录集的movenext方法可将指针指向下一条记录 • 利用以下几条语句可达到对记录集进行遍历 Do while not rs.eof
Options:Source类型
Options参数
值 -1 1
说明 Source参数类型未知(缺省) Source参数为命令类型
adcmdunknown Adcmdtext
Adcmdtable
adcmdstoreproc
2
3
Source参数是一个表名
Source参数为一个存储过程
建立recordset对象具体方法(1)
ActiveConnection Connection对象名或数据库连接字符串
Absoluteposition
BOF EOF RecordCount
当前指针所在的记录行
标志着记录集的开始,若当前记录位置在第一个记录前则值为True 标志着记录集的结束,若当前记录位置在最后一个记录后则值为True 返回记录集的记录总数
• 利用connection对象的execute方法来建立
Dim db,rs Set db=server.createobject(“adodb.connection”) Db.open “dsn=addr” Set rs=db.execute(“select * from users”)
•说明:
–这种方法是最常用的方法。 –它没有明确建立Command对象,但是会建立一 个隐含的Command对象。
• 常数 说明 • adLockReadOnly 缺省值,Recordset对象以只读方式启 动,无法运行AddNew、Update及Delete等方法 • adLockPrssimistic 当数据源正在更新时,系统会暂时锁 住其他用户的动作,以保持数据一致性。 • adLockOptimistic 当数据源正在更新时,系统并不会锁住 其他用户的动作,其他用户可以对数据进行增、删、改的 操作。 • adLockBatchOptimistic 当数据源正在更新时,其他用户 必须将CursorLocation属性改为adUdeClientBatch才能对 数据进行增、 删、改的操作。
建立recordset对象具体方法(2)
• 利用connection对象来建立
Dim db,rs Set db=server.createobject(“adodb.connection”) Db.open “dsn=addr” Set rs=server.createobject(“adodb.recordset”) Rs.open “select * from users”,db
CursorType:指针类型说明
游标类型 仅向前游标 键盘游标 动态游标 静态游标 ADO 常量 adOpenForwardO nly0 adOpenKeySet 1 adOpenDynamic 2 adOpenStatic 3 描述 只允许向前移动 (缺省) 可看到其他用户所做的部分数据更 改,不包括新增记录 可看到其他用户所做的所有数据更 改 提供记录集的静态副本。看不到其 他人的更改。
• 说明:
– 这种方法明确建立三个对象,功能最强大。
recordset对象常见属性
属性 Source CursorType LockType maxrecords Pagesize Pagecount absolutepage 说明 Command对象名或SQL语句或数据表名 指针类型(游标类型) 锁类型 控制从服务器取得的记录集的最大记录数目 数据分页显示时每一页的记录数 数据分页显示时数据页的总数 当前指针所在的数据页
adLockReadOnly 1
adLockPessimistic 2 adlockOptimistic 3
缺省的上锁类型。以这种方式打开记
录集,将不能改变数据。 (缺省) 正在编辑的记录将被锁定,以确保没 有多个用户同时编辑和更新该记录。 只有在调用 Update 方法时才锁定记 录。
adLockBatchOptimist 可使用 UpdateBatch 方法一次更新 ic 多个记录 。 4
建立Recordset对象的具体方法(3)
• 利用Command对象的Execute方法建立的另一种 形式
– – – – – – – – Dim db,cmd,rs Set db=Server.CreateObject("ADODB.Connection") db.Open "Dsn=addr“ Set cmd= Server.CreateObject("ADODB.Command") cmd.ActiveConnection=db cmd.CommandText="Select * From users" Set rs=Server.CreateObject("ADODB.Recordset") rs.Open cmd