Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29956570
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: 系统运维

2009-01-10 21:19:44

1.上面我们讲了如何判断是否有记录个数那现在来分析一下如果有记录的话如何将记录读取出来呢?
ASP中的记录集对象的方法及属性如下:
rs.movenext 将记录指针从当前的位置向下移一行
rs.moveprevious 将记录指针从当前的位置向上移一行
rs.movefirst 将记录指针移到数据表第一行
rs.movelast 将记录指针移到数据表最后一行
rs.absoluteposition=N 将记录指针移到数据表第N行
rs.absolutepage=N 将记录指针移到第N页的第一行
rs.pagesize=N 设置每页为N条记录
rs.pagecount 根据 pagesize 的设置返回总页数
rs.recordcount 返回记录总数
rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否
rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否
rs.delete 删除当前记录,但记录指针不会向下移动
rs.addnew 添加记录到数据表末端
rs.update 更新数据表记录
里面有实现分页处理的属性的哦!也会有添加新记录删除新记录操作的呢!
操作记录中的内容的哦!
Recordset 对象的常用属性<表>
属 性 描   述 / 注 解
ActiveConnection 指定与数据提供者的连接信息,用来指定当前的 Recordset 对象属于哪个 Connection 对象。
Source 指定 Recordset 对象的数据源,可以是一个 Command 对象名、SQL 语句、数据库表或存储过程 。
CoursorType 指定 Recordset 对象所使用的光标类型。
共有 4 种光标类型:

  0 一 前滚光标,光标只能向前移动,执行效率高。是 Cursor 的默认值;

  1 一 键盘光标,光标可向前或向后移动,Recordset 记录集同步反映自它创建后其他用户所作的修改和删除,但却不能同步反映自它创建后其他用户新增加的记录;

  2 一 动态光标,光标可向前或向后滚动,任何时候 Recordset 记录集都同步反映其他用户的任何操作;

  3 一 静态光标,光标可向前或向后移动,自创建后无法同步反映其他用户所做的任何操作,它的功能简单但消耗资源少。

LockType 表示编辑时记录的锁定类型。它决定了当不止一个用户试图同时改变一个记录时,Recordset 如何处理数据记录。
0 一 只读锁定,记录只读,不能更新 Recordset ,为 LockType 的默认值;

  1 一 悲观锁定,编辑记录开始立刻锁定,直到提交给数据提供者;

  2 一 乐观锁定,一次锁定一条记录,只有调用 Update 方法提交数据时才锁定记录;

  3 一 乐观的批量更新,允许同时更新多条记录。

Filter 用来设定一个过滤条件,以便对 Recordset 记录进行过滤。
CacheSize 表示一个 Recordset 对象在高速缓存中的记录数。
Maxrecords 执行一个 SQL 查询时,返回 Recordset 对象的最大记录数。
Bof 判断记录指针是否到了第一条记录之前。
Eof 判断记录指针是否到了最后一条记录之后。
RecordCount 返回 Recordset 对象的记录数,(在使用键盘光标时,该属怀返回 的可能是不太准确的数值;一般情况下,并不用这种方法来统计 Recordset 中的记录数,因为它的性能并不稳定)
Bookmark 书签标记,用来保存当前记录的位置。
AbsolutePosition 用来设定 Recordset 对象中当前记录的顺序位置是第几行记录。
PageSize 表示 Reccordset 对象的页面大小(每页多少条记录),默认值为10。
PageCount 表示 Recordset 对象的页面个数。
AbsolutePage 表示当前记录的页号。
EditMode 指示当前记录的编辑状态,0 一 已被编辑;1 一 已被修改而未提交;2 一 存入数据库的新记录 。
Status 对 Recordset 对象进行批量更新后,查询当前记录的状态。
意义描述 意义描述
0 记录更新成功。 1024 存在记录锁定,新记录未保存。
1 新记录。 2048 使用乐观并发事件,未保存。
2 记录被删除。 4096 用户违反完整性规则,记录未保存。
4 记录未被删除。 8192

  很待定修改,记录未保存。

8 记录未被修改。 16384 与一存储对象相冲突,记录未保存。
16 书签不合法,记录未保存。 32768 内存不够,记录未保存。
64 影响多个记录,未保存。 65536 用户没有中、足够的权限,未保存。
128 指向一待定插入,记录未保存。 131072 违反基本数据库原则,记录未保存。
256 操作被取消,记录未保存。 262144 记录已从数据源删除。

Close 关闭一个 Recordset 对象。 但并不从内存中删除该对象,只是无法读取其中的数据,但仍然可以读取它的属性。因此一个关闭的 Recordset 对象还可以用 Open 方法打开并保持其原有属性。
Rs.Close
Rs:为已经建立的 Recordset 对象;如果正进行编辑更新数据的操作,则在使用此方法之前必须先调用 Update 和 CancelUpdate 方法。否则将会出现错误。
Clone 创建一个 Recordset 对象的完全拷贝,但只有所用的 Recordset 对象类型允许使用 Bookmarks时才能使用该方法。
MoveFirst 把 Recordset 指针指向第一行记录。
Rs.MoveFirst
MoveLast 把 Recordset 指针指向最后一条记录(该 Recordset 必须支持书签)。
Rs.MoveLast
MovePrevious 把Recordset 指针上移一行(使用前应判断 BOF 是否为真,该方法必须支持书签)。
Rs.MovePreviors
MoveNext 把Recordset 指针下移一行(使用前应判断 EOF 是否为真)。
Rs.MoveNext
Move 把Recordset 指针指向指定的记录。
Move n [,start]
n 为要移动的记录数,取正时表示向前(下)移动,取负时表示向后(上)移动;

  start 是可选参数,表示移动的起点。

GetRows 从一个 Rexordset 对象读取一行或多行记录到一个数组中。
Myarray=Rs.GetRows ( rows,start,fields )
Myarray 为目标数组名;Rs 为已创建的 Recordset 对象,Rows 为返回数组的行数;start 为读取数据的起点 (书签);Fields 为 Recordset 的字段。
NextRecordSet 清除当前的 Recordset 并执行下一条指令,以传回下一个 Recordset 对象,如果没有下一条指令,则返回 Nothing 给 Recordset 。
Requery 重新执行 SQL 操作,以更新 Recordset 对象中的数据。
Resync 从数据源更新当前的 Recordset 记录,实现与数据源的同步。
Addnew 增加一条空记录。
Rs.AddNew N
增加一条空记录,并将数组中的元素(N)添加到这条空记录中。
Delete 删除当前记录。
Delete [value]
如果 value=1(默认值)表示该方法只删除当前记录,value=2 表示该方法删除所有由 Filter 属性设定的记录。
Update 保存当前记录的任何变动。
Rs.Update
CancelUpdate 取消前一个 Update 方法所做的一切修改。
UpdateBatch Recordset 工作在批量方式时,取消对 Recordset 的更新。
Suports 获取创建的 Recordset 对象的能力信息。
注:使用 Move 、MoveFirst 、MoveLast 、MovePrevious 、MoveNext 方法移动记录指针时,需要注意 Rrcordset 对象的光标类型。如“前滚光标”限制了记录指针只能向前移动。

总结了这个内置对象的常用属性及方法之后我们来判断一下现在的话题吧!
现在再来总结一下VBScript中的循环的语句操作:
Do...Loop: 当(或直到)条件为“真”时循环。
While...Wend: 当条件为“真”时循环。
For...Next: 指定循环次数,使用计数器重复运行语句。
For Each...Next: 对于集合中的每项或数组中的每个元素,重复执行一组语句。   
我们先来看看 Do...Loop,它是可以多次(次数不定)运行语句块。当条件为“真”时或条件变为“真”之前,重复执行语句块。
OK!来总结如下:
现在我用四种方法来写循环将数据表中的内容提取出来处理吧!
第一种方法:
if not rs.eof and not rs.bof then
    while not rs.eof
        response.Write(rs("names"))
        rs.movenext
    Wend
end if
利用了while  ...   wend  语法处理的哦!
第二种方法:
if not rs.eof and not rs.bof then
    do while not rs.eof
        response.Write(rs("names"))
        rs.movenext
    loop
end if
利用了do  loop  方法进行了引用 操作的哦!
第三种方法:
Set Rs=Server.CreateObject("ADODB.RecordSet")
Rs.CursorLocation = 3
Rs.Open sql,Conn,3,1
for i=0 to rs.recordcount-1
if rs.eof then exit for
response.Write(rs("names"))
rs.movenext
next
利用了FOR  NEXT  方法进行了读取数据信息操作的!
通过这种方法open的方法是可以将记录个数读取出来的哦!
这里要千万注意了要加一个if判断条件进行处理的哦  要不然会报到了eof了
OK!以后的话我们可以利用这三种方法进行读取出来数据库中的记录信息了哦!



阅读(1095) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~