ASP入门教程-Recordset对象2008-02-17含笑一、Recordset 对象简述Recordset 对象表示的是来自基本表或命令执行结果的记录全集。在任何情况下,该对象所指的当前记录均为集合内的单条记录。使用 Recordset 对象可以操作来自提供程序的数据,通过该对象几乎可以对所有数据进行操作。所有 Recordset 对象均使用记录(行)和字段(列)进行构造。Recordset 对象实际上是依附于 Connection 对象和 Command 对象之上的。通过建立及开启一个 Connection 对象,可以与我们关心的数据库建立连接;通过使用 Command 对象,则可以告诉数据库我们想要做什么:是插入一条记录,还是查找符合条件的记录;通过使用 Recordset 对象,则可以方便自如地操作 Command 对象返回的结果。二、创建 Recordset 对象要使用 Recordset 对象处理结果,首先必须创建 Recordset 对象实例。其格式如下:
Set RS=Server.CreateObject("adodb.recordset")
三、打开记录集
RS.Open Source,ActiveConnection,CursorType,LockType,Options
所有的参数都是可选项。Source 为 Command 对象变量名、SQL 语句、表名、存储过程调用或持久 Rcordset 文件名。ActiveConnection 为有效的 Connection 对象变量名或包含 ConnectionString 字符串。LockType 指定打开 Recordset 时应使用的锁定类型。Options 指定如何计算 Source 参数或从以前保存 Recordset 的文件中恢复 Recordset。四、Recordset 对象的常用属性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 | 记录已从数据源删除。 |
五、Rcordset 对象的方法Recordset 对象的方法<表二>
方法 | 描述 / 格式 / 注解 |
Open | 打开一个 Recordset 对象。 |
Rs.Open[Source][,ActiveConnection][,CursorType][,LursorType][,Option] |
Rs :为已经建立的 Recordset 对象;Source :为可选参数,可以是一个 Command 对象名、SQL 语句、数据库表或存储过程; ActiveConnection :定义与数据库的连接信息;CursorType :是Recordset 对象所使用的光标类型;LockTypec 是编辑 Recordset 对象记录时所使用的锁定类型;Option 指示数据提供者如何处理 Source 的内容类型,其参数值及其意义见下表: Options值 | 意义描述 | 1 | 表示被执行的字符串包含一个命令文本。 | 2 | 表示被执行的字符串包含一个表名。 | 4 | 表示被执行的字符串包含一个存储过程名。 | 8 | 没有指定字符串的内容(这是默认值) |
|
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 对象的光标类型。如“前滚光标”限制了记录指针只能向前移动。 |