ADODB.Recordset 是 ActiveX Data Objects (ADO) 中用于操作数据库结果集的对象。它通常用来从数据库查询数据并在客户端应用程序中进行处理。Recordset 对象支持对数据库中的数据进行各种操作,如读取、修改、插入、删除等。

常用属性和方法

常用属性

  1. RecordCount
    • 说明:返回 Recordset 中的记录数。该属性在某些数据源中可能返回 -1(例如,对于某些只读连接的数据库)。
    • 类型:整数
    MsgBox rs.RecordCount
  2. EOF (End Of File)
    • 说明:如果 Recordset 的当前指针位于文件的末尾,则返回 True,否则返回 False
    • 类型:布尔值
    If rs.EOF Then MsgBox "End of File" End If
  3. BOF (Beginning Of File)
    • 说明:如果 Recordset 的当前指针位于文件的开始,则返回 True,否则返回 False
    • 类型:布尔值
    If rs.BOF Then MsgBox "Beginning of File" End If
  4. Fields
    • 说明:返回 Recordset 中列的集合。可以通过此属性访问单个列的值或元数据。
    • 类型Fields 集合
    MsgBox rs.Fields("ColumnName").Value
  5. ActiveConnection
    • 说明:返回或设置与 Recordset 关联的连接对象。可以用来设置连接的数据库,或重新打开与另一个数据库的连接。
    • 类型:连接对象
    Set rs.ActiveConnection = conn
  6. Sort
    • 说明:设置 Recordset 的排序顺序。可以按字段对记录进行排序。
    • 类型:字符串
    rs.Sort = "ColumnName DESC"
  7. State
    • 说明:返回 Recordset 当前的状态,指示它是否处于打开状态(1 = 开放,0 = 关闭)。
    • 类型:整数
    If rs.State = 1 Then MsgBox "Recordset is open" End If
  8. CursorType
    • 说明:返回或设置 Recordset 的光标类型。常见的值有:
      • adOpenForwardOnly:只前进光标(默认)
      • adOpenKeyset:支持更新和删除
      • adOpenDynamic:支持即时修改
      • adOpenStatic:静态光标
    • 类型:整数
    rs.CursorType = adOpenKeyset
  9. LockType
    • 说明:返回或设置 Recordset 的锁定类型。常见值有:
      • adLockReadOnly:只读锁
      • adLockPessimistic:悲观锁
      • adLockOptimistic:乐观锁
      • adLockBatchOptimistic:批量乐观锁
    • 类型:整数
    rs.LockType = adLockOptimistic
  10. Filter
    • 说明:为 Recordset 设置筛选条件,可以限制返回的记录。
    • 类型:字符串
    rs.Filter = "ColumnName = 'Value'"
  11. AbsolutePosition
    • 说明:返回或设置当前记录的绝对位置。它是指记录集中的当前位置,从 1 开始计数。
    • 类型:整数
    MsgBox rs.AbsolutePosition
  12. PageSize
    • 说明:返回或设置 Recordset 中每一页的记录数。当 Recordset 分页时使用此属性。
    • 类型:整数
    rs.PageSize = 20

常用方法

  1. Open
    • 说明:打开一个 Recordset,并通过指定的 SQL 查询、表格或存储过程填充数据。
    • 语法rs.Open Source, ActiveConnection, CursorType, LockType, Options
      • Source:数据源,可以是 SQL 查询、表名或存储过程。
      • ActiveConnection:连接对象。
      • CursorType:光标类型(如 adOpenStatic)。
      • LockType:锁定类型。
      • Options:其他选项(如 adCmdText)。
    rs.Open "SELECT * FROM Employees", conn, adOpenStatic, adLockReadOnly
  2. Close
    • 说明:关闭 Recordset,释放资源。
    • 语法rs.Close
    rs.Close
  3. AddNew
    • 说明:向 Recordset 添加一条新的记录,允许你指定各个字段的值。
    • 语法rs.AddNew
    • 然后使用 Fields 属性设置字段的值。
    rs.AddNew rs.Fields("Name").Value = "John Doe" rs.Fields("Age").Value = 30 rs.Update
  4. Update
    • 说明:保存对当前记录的更改。
    • 语法rs.Update
  5. Delete
    • 说明:删除当前记录。
    • 语法rs.Delete
  6. MoveNext
    • 说明:将当前记录指针移动到下一条记录。
    • 语法rs.MoveNext
  7. MovePrevious
    • 说明:将当前记录指针移动到前一条记录。
    • 语法rs.MovePrevious
  8. MoveFirst
    • 说明:将当前记录指针移动到第一条记录。
    • 语法rs.MoveFirst
  9. MoveLast
    • 说明:将当前记录指针移动到最后一条记录。
    • 语法rs.MoveLast
  10. Find
    • 说明:根据给定的条件查找记录,并将记录指针移动到找到的位置。
    • 语法rs.Find "FieldName = 'Value'"
    rs.Find "Age > 30"
  11. Clone
    • 说明:复制 Recordset 对象,返回一个新的 Recordset,包括当前的所有记录。
    • 语法Set rsCopy = rs.Clone
  12. Save
    • 说明:将 Recordset 中的记录保存到文件。
    • 语法rs.Save "FileName", adPersistXML

常见的 Recordset 使用场景

  1. 读取数据
    使用 Open 方法打开一个查询,读取数据并处理。rs.Open "SELECT * FROM Employees", conn While Not rs.EOF MsgBox rs.Fields("Name").Value rs.MoveNext Wend
  2. 插入数据
    使用 AddNew 和 Update 方法插入新记录。rs.AddNew rs.Fields("Name").Value = "John Doe" rs.Fields("Age").Value = 30 rs.Update
  3. 更新数据
    查找并更新某条记录。rs.Find "Name = 'John Doe'" If Not rs.EOF Then rs.Fields("Age").Value = 31 rs.Update End If
  4. 删除数据
    删除当前记录。rs.Delete

总结

ADODB.Recordset 是 ADO 中用于处理数据库查询结果的核心对象,提供了丰富的属性和方法,用于读取、更新、插入、删除数据以及处理结果集。通过合理使用 Recordset 对象,开发者能够高效地操作数据库中的数据,并进行各种数据处理任务。