ADODB.Recordset 是 ActiveX Data Objects (ADO) 中用于操作数据库结果集的对象。它通常用来从数据库查询数据并在客户端应用程序中进行处理。Recordset 对象支持对数据库中的数据进行各种操作,如读取、修改、插入、删除等。
常用属性和方法
常用属性
RecordCount- 说明:返回 
Recordset中的记录数。该属性在某些数据源中可能返回 -1(例如,对于某些只读连接的数据库)。 - 类型:整数
 
MsgBox rs.RecordCount- 说明:返回 
 EOF(End Of File)- 说明:如果 
Recordset的当前指针位于文件的末尾,则返回True,否则返回False。 - 类型:布尔值
 
If rs.EOF Then MsgBox "End of File" End If- 说明:如果 
 BOF(Beginning Of File)- 说明:如果 
Recordset的当前指针位于文件的开始,则返回True,否则返回False。 - 类型:布尔值
 
If rs.BOF Then MsgBox "Beginning of File" End If- 说明:如果 
 Fields- 说明:返回 
Recordset中列的集合。可以通过此属性访问单个列的值或元数据。 - 类型:
Fields集合 
MsgBox rs.Fields("ColumnName").Value- 说明:返回 
 ActiveConnection- 说明:返回或设置与 
Recordset关联的连接对象。可以用来设置连接的数据库,或重新打开与另一个数据库的连接。 - 类型:连接对象
 
Set rs.ActiveConnection = conn- 说明:返回或设置与 
 Sort- 说明:设置 
Recordset的排序顺序。可以按字段对记录进行排序。 - 类型:字符串
 
rs.Sort = "ColumnName DESC"- 说明:设置 
 State- 说明:返回 
Recordset当前的状态,指示它是否处于打开状态(1 = 开放,0 = 关闭)。 - 类型:整数
 
If rs.State = 1 Then MsgBox "Recordset is open" End If- 说明:返回 
 CursorType- 说明:返回或设置 
Recordset的光标类型。常见的值有:adOpenForwardOnly:只前进光标(默认)adOpenKeyset:支持更新和删除adOpenDynamic:支持即时修改adOpenStatic:静态光标
 - 类型:整数
 
rs.CursorType = adOpenKeyset- 说明:返回或设置 
 LockType- 说明:返回或设置 
Recordset的锁定类型。常见值有:adLockReadOnly:只读锁adLockPessimistic:悲观锁adLockOptimistic:乐观锁adLockBatchOptimistic:批量乐观锁
 - 类型:整数
 
rs.LockType = adLockOptimistic- 说明:返回或设置 
 Filter- 说明:为 
Recordset设置筛选条件,可以限制返回的记录。 - 类型:字符串
 
rs.Filter = "ColumnName = 'Value'"- 说明:为 
 AbsolutePosition- 说明:返回或设置当前记录的绝对位置。它是指记录集中的当前位置,从 1 开始计数。
 - 类型:整数
 
MsgBox rs.AbsolutePositionPageSize- 说明:返回或设置 
Recordset中每一页的记录数。当Recordset分页时使用此属性。 - 类型:整数
 
rs.PageSize = 20- 说明:返回或设置 
 
常用方法
Open- 说明:打开一个 
Recordset,并通过指定的 SQL 查询、表格或存储过程填充数据。 - 语法:
rs.Open Source, ActiveConnection, CursorType, LockType, OptionsSource:数据源,可以是 SQL 查询、表名或存储过程。ActiveConnection:连接对象。CursorType:光标类型(如adOpenStatic)。LockType:锁定类型。Options:其他选项(如adCmdText)。
 
rs.Open "SELECT * FROM Employees", conn, adOpenStatic, adLockReadOnly- 说明:打开一个 
 Close- 说明:关闭 
Recordset,释放资源。 - 语法:
rs.Close 
rs.Close- 说明:关闭 
 AddNew- 说明:向 
Recordset添加一条新的记录,允许你指定各个字段的值。 - 语法:
rs.AddNew - 然后使用 
Fields属性设置字段的值。 
rs.AddNew rs.Fields("Name").Value = "John Doe" rs.Fields("Age").Value = 30 rs.Update- 说明:向 
 Update- 说明:保存对当前记录的更改。
 - 语法:
rs.Update 
Delete- 说明:删除当前记录。
 - 语法:
rs.Delete 
MoveNext- 说明:将当前记录指针移动到下一条记录。
 - 语法:
rs.MoveNext 
MovePrevious- 说明:将当前记录指针移动到前一条记录。
 - 语法:
rs.MovePrevious 
MoveFirst- 说明:将当前记录指针移动到第一条记录。
 - 语法:
rs.MoveFirst 
MoveLast- 说明:将当前记录指针移动到最后一条记录。
 - 语法:
rs.MoveLast 
Find- 说明:根据给定的条件查找记录,并将记录指针移动到找到的位置。
 - 语法:
rs.Find "FieldName = 'Value'" 
rs.Find "Age > 30"Clone- 说明:复制 
Recordset对象,返回一个新的Recordset,包括当前的所有记录。 - 语法:
Set rsCopy = rs.Clone 
- 说明:复制 
 Save- 说明:将 
Recordset中的记录保存到文件。 - 语法:
rs.Save "FileName", adPersistXML 
- 说明:将 
 
常见的 Recordset 使用场景
- 读取数据:
使用Open方法打开一个查询,读取数据并处理。rs.Open "SELECT * FROM Employees", conn While Not rs.EOF MsgBox rs.Fields("Name").Value rs.MoveNext Wend - 插入数据:
使用AddNew和Update方法插入新记录。rs.AddNew rs.Fields("Name").Value = "John Doe" rs.Fields("Age").Value = 30 rs.Update - 更新数据:
查找并更新某条记录。rs.Find "Name = 'John Doe'" If Not rs.EOF Then rs.Fields("Age").Value = 31 rs.Update End If - 删除数据:
删除当前记录。rs.Delete 
总结
ADODB.Recordset 是 ADO 中用于处理数据库查询结果的核心对象,提供了丰富的属性和方法,用于读取、更新、插入、删除数据以及处理结果集。通过合理使用 Recordset 对象,开发者能够高效地操作数据库中的数据,并进行各种数据处理任务。
发表回复