Recordset 对象可实现对数据库记录的查询、增加、更新、删除。
| Set recordset = Server.CreateObject("ADODB.Recordset") |
| 属性 | 意义 |
|---|---|
| AbsolutePosition | 返回当前记录的位置号,或转到某记录,从 1
起或: AdPosUnknown=-1:记录集为空 AdPosBOF =-2:已到最前指 AdPosEOF =-3:已到最后 |
| AbsolutePage | 返回当前记录所在页码,或转到某页的第一条记录 从 1 起,其余同上 |
| ActiveConnection | 设为连接字符串,或 Connection 对象 |
| BOF | 标记已超出首记录 |
| Bookmark | 当前记录书签 |
| CacheSize | 缓存记录数 |
| CursorLocation | 游标服务的位置 |
| CursorType | 游标类型 |
| EditMode | 当前记录的编辑状态 |
| EOF | 标记已超出最后记录 |
| Index | 索引名,字符串类型 |
| Filter | 筛选条件 |
| LockType | 锁定类型 |
| MarshalOptions | 指示要被调度返回服务器的记录 |
| MaxRecords | 指示最多需返回的记录数 |
| PageCount | 记录所占的页数 |
| PageSize | 每页的记录数,一般为10 |
| RecordCount | 记录数,只在游标为键集或静态时有效 |
| Sort | 排序记录,如 "name asc,age desc,sex" |
| Source | 指示数据的来源,有(Command 对象,SQL,表名,存储过程名) |
| Fields | Field 对象集合,代表字段,默认属性 |
| State | 执行异步方法时的当前状态 |
| Status | 指示有关批更新或其他大量操作的当前记录的状态 |
| 方法 | 意义 | ||||||
|---|---|---|---|---|---|---|---|
| AddNew(...) | 增加记录 | ||||||
| CursorType | 游标类型 | ||||||
| CursorLocation | 锁定类型 | ||||||
| Cancel() | 取消执行挂起的异步 Open 方法 | ||||||
| CancelBatch(AffectRecords) | 取消执行挂起的批更新,AffectRecords: AdAffectCurrent=1:取消当前记录的批更新 AdAffectGroup =2:取消满足 Filter 的更新 AdAffectAll =3:取消所有记录的批更新 |
||||||
| CancelUpdate() | 取消对当前记录所作的更改,或取消新增记录 | ||||||
| Clone(LockType) | 复制当前对象的副本,LockType 为 AdLockUnspecified = -1 :锁定类型相同 AdLockReadOnly = 1 :副本为只读 |
||||||
| Delete(AffectRecords) | 删除记录 | ||||||
| Move(NumRecords,Start) | 移动记录指针 NumRecords 个位置,Start: AdBookmarkCurrent=0:从当前记录移动 AdBookmarkFirst =1:从首记录移动 AdBookmarkLast =2:从尾记录移动 |
||||||
| MoveFirst() | 指向最前一条记录 | ||||||
| MoveLast() | 指向最后一条记录 | ||||||
| MoveNext() | 指向上一条记录 | ||||||
| MovePrevious() | 指向下一条记录 | ||||||
| NextRecordset(RecordsAffected) | 返回下一条查询的记录集 RedordSet 对象,无则返回
nothing 参数用于返回受影响的记录数,不是返回的记录数 |
||||||
| Open(...) | 执行查询,可包含多条查询语句,返回记录 | ||||||
| Requery() | 再次执行查询,返回最新的数据集 | ||||||
| Resync(...) | 重新从数据库中读取已查询记录的最新值 | ||||||
| Save(FileName, PersistFormat) | 保存记录到文件,并且指针回到首行 PersistFormat 指示文件格式
|
||||||
| Seek(KeyValues,SeekOption) | 搜索记录并定位 | ||||||
| Find(Criteria,SkipRecords,SearchDirection,Start) | 按条件、方向等查询记录并定位,示例: cond := 'typeid=' + IntToStr(pow.TypeId); pm := 0; rec.Find(cond, 0, 1, pm); |
||||||
| Supports(CursorOptions) | 返回是否支持指定功能 | ||||||
| Update() | 更新当前记录 | ||||||
| UpdateBench() | 更新所有记录 |
| recordset.Open Source, ActiveConnection, CursorType, LockType, Options |
| 参数 | 意义 |
|---|---|
| Source | 可为 Command 对象,查询字符串,表名等
查询字符串可包含多个查询,用分号隔开,参见 NextReocrdset 方法 |
| ActiveConnection | 可为数据库连接,数据库连接字符串 |
| CursorType | 游标类型和锁定类型。组合: 0,1 默认,只读,不支持 RecordCount 1,1 只读,支持 RecordCount 1,3 可写,常用,支持 RecordCount |
| LockType | |
| Options | 参见 CommandType |
重新读取当前记录集的值。(从数据库刷新)
| Resync(AffectRecords, ResyncValues) |
| 参数 | 意义 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| AffectRecords | 重取数据的范围
|
||||||||||
| ResyncValues |
是否覆盖基本值
|
|
rec.AddNew
// 新增记录成为当前记录,通过 Update 更新。 rec.AddNew 字段数组,值数组 // 记录已被插入,批更新时通过 UpdateBench 更新。 |
| 值 | 参数 | 意义 |
|---|---|---|
| 1 | AdAffectCurrent | 仅删除当前记录。(默认) |
| 2 | AdAffectGroup | 删除满足当前 Filter 属性设置的记录。要使用该选项,必须将 Filter 属性设置为有效的预定义常量之一。 |
| 3 | adAffectAll | 删除所有记录。 |
| 4 | adAffectAllChapters | 删除所有子集记录。 |
游标类型 1 和 3 支持 RecordCount 属性。
| 值 | 类型 | 常量 | 意义 |
|---|---|---|---|
| 0 | 仅向前游标 | AdOpenForwardOnly | 除仅允许在记录中向前滚动之外,其行为类似静态游标。这样,当需要在
Recordset 中单程移动时就可提高性能。 (默认) |
| 1 | 键集游标 | AdOpenKeyset | 其行为类似动态游标,不同的只是禁止查看其他用户添加的记录,并禁止访问其他用户删除的记录,其他用户所作的数据更改将依然可见。它始终支持书签,因此允许 Recordset 中各种类型的移动。 |
| 2 | 动态游标 | AdOpenDynamic | 用于查看其他用户所作的添加、更改和删除,并用于不依赖书签的 Recordset 中各种类型的移动。如果提供者支持,可使用书签。 |
| 3 | 静态游标 | AdOpenStatic | 提供记录集合的静态副本以查找数据或生成报告。它始终支持书签,因此允许 Recordset 中各种类型的移动。其他用户所作的添加、更改或删除将不可见。这是打开客户端 (ADOR) Recordset 对象时唯一允许使用的游标类型。 |
| 值 | 类型 | 意义 |
|---|---|---|
| 1 | AdLockReadOnly | 只读(默认) 不能改变数据 |
| 2 | AdLockPessimistic | 保守式锁定(逐个) 提供者完成确保成功编辑记录所需的工作,通常通过在编辑时立即锁定数据源的记录 |
| 3 | AdLockOptimistic | 开放式锁定(逐个) 提供者使用开放式锁定,只在调用Update 方法时才锁定记录 |
| 4 | AdLockBatchOptimistic | 开放式批更新 用于批更新模式(与立即更新模式相对) |
| 属性/方法 | 意义 |
|---|---|
| Count | 字段数 |
| Append(Field) | |
| Delete(Field) | |
| Item(index) | 通过下标或字段名返回 Field 对象,默认 |
| Refresh() |
| 属性/方法 | 意义 |
|---|---|
| Name | 字段名 |
| Value | 字段值,可更改后,更新到数据库,默认 |
| Type Precision NumericScale |
数据类型,只读 数字精度,最大位数,只读 小数位数,只读 |
| DefinedSize | 字段定义尺寸 |
| ActualSize | 数据尺寸 |
| Attributes Properties |
Attributes 复合属性 |
| AppendChunk(data) | 输入二进制数据,后面的自动与前面的接上
如果对其他字段进行了操作,则重新输入 |
| GetChunk(size) | 取出二进制数据,可分次取部分数据
如果对其他字段进行了操作,则重新从头取 |
| OriginalValue | 字段原来的值,刚执行查询时的值 |
| UnderlyingValue | 字段现在的值,数据库中的值 |
| 常量 | 说明 |
|---|---|
| adFldMayDefer = 2 | 指示延迟该字段,即不使用整个记录从数据源检索该字段值,只有在显式访问这些字段时才能对其进行检索。 |
| adFldUpdatable = 4 | 指示可以写入该字段。 |
| adFldUnknownUpdatable = 8 | 指示提供者无法确定是否可以写入该字段。 |
| adFldFixed = 16 | 指示该字段包含定长数据。 |
| adFldIsNullable = 32 | 指示该字段接受 Null 值。 |
| adFldMayBeNull = 64 | 指示可以从该字段读取 Null 值。 |
| adFldLong = 128 | 指示该字段为长二进制字段 |
| adFldRowID = 256 | 指示该字段含有无法写入的持久行标识符,且该字段除了对行进行标识(如记录号、唯一标识符等)外不存在有意义的值。 |
| adFldRowVersion = 512 | 指示该字段包含用来跟踪更新的某种时间或日期标记。 |
| adFldCacheDeferred=4096 | 指示提供者缓存了字段值,并已完成随后对缓存的读取。 |
| 常量 | 说明 |
|---|---|
| AdStateClosed = 0 | 默认,指示对象是关闭的。 |
| AdStateOpen = 1 | 指示对象是打开的。 |
| AdStateConnecting = 2 | 指示 Recordset 对象正在连接。 |
| AdStateExecuting = 4 | 指示 Recordset 对象正在执行命令。 |
| AdStateFetching = 8 | 指示 Recordset 对象的行正在被读取。 |
| 常数 | 说明 |
|---|---|
| AdFilterNone = 0 | 删除当前筛选条件并恢复查看的所有记录。 |
| AdFilterPendingRecords = 1 | 允许只查看已更改且尚未发送到服务器的记录。只能应用于批更新模式。 |
| AdFilterAffectedRecords = 2 | 允许只查看上一次 Delete、Resync、UpdateBatch 或 CancelBatch 调用所影响的记录。 |
| AdFilterFetchedRecords = 3 | 允许查看当前缓冲区中的记录,即上一次从数据库中检索记录的调用结果。 |
| AdFilterConflictingRecords = 5 | 允许查看在上一次批更新中失败的记录。 |
| 常量 | 说明 |
|---|---|
| AdEditNone = 0 | 指示当前没有编辑操作。 |
| AdEditInProgress = 1 | 指示当前记录中的数据已被修改但未保存。 |
| AdEditAdd = 2 | 指示 AddNew 方法已被调用, 且复制缓冲区中的当前记录是尚未保存到数据库中的新记录 。 |
| AdEditDelete = 4 | 指示当前记录已被删除。 |
| 常量 | 说明 |
|---|---|
| AdRecOK = 0 | 成功地更新记录。 |
| AdRecNew = 1 | 记录是新建的。 |
| AdRecModified = 2 | 记录被修改。 |
| AdRecDeleted = 4 | 记录被删除。 |
| AdRecUnmodified = 8 | 记录没有修改。 |
| AdRecInvalid = 16 | 由于书签无效,记录没有保存。 |
| AdRecMultipleChanges = 64 | 由于影响多个记录,因此记录未被保存。 |
| AdRecPendingChanges = 128 | 由于记录引用挂起的插入,因此未被保存。 |
| AdRecCanceled = 256 | 由于操作被取消,未保存记录。 |
| AdRecCantRelease = 1024 | 由于现有记录锁定,没有保存新记录。 |
| AdRecConcurrencyViolation = 2048 | 由于开放式并发在使用中,记录未被保存。 |
| AdRecIntegrityViolation = 4096 | 由于用户违反完整性约束,记录未被保存。 |
| AdRecMaxChangesExceeded = 8192 | 由于存在过多挂起更改,记录未被保存。 |
| AdRecObjectOpen = 16384 | 由于与打开的储存对象冲突,记录未被保存。 |
| AdRecOutOfMemory = 32768 | 由于计算机内存不足,记录未被保存。 |
| AdRecPermissionDenied = 65536 | 由于用户没有足够的权限,记录未被保存。 |
| AdRecSchemaViolation = 131072 | 由于记录违反基本数据库的结构,因此未被保存。 |
| AdRecDBDeleted = 262144 | 记录已经从数据源中删除。 |
| 常量 | 说明 |
|---|---|
| adAddNew = 16778240 | 可使用 AddNew 方法添加新记录。 |
| adApproxPosition = 16384 | 可读取并设置 AbsolutePosition 和 AbsolutePage 的属性。 |
| adBookmark = 8192 | 可使用 Bookmark 属性获得对特定记录的访问。 |
| adDelete = 16779264 | 可以使用 Delete 方法删除记录。 |
| AdHoldRecords = 256 | 可以检索多个记录或者更改下一个检索位置而不必提交所有挂起的更改。 |
| AdMovePrevious = 512 | 可使用 MoveFirst 和 MovePrevious 方法,以及 Move 或 GetRows 方法将当前记录位置向后移动而不必使用书签。 |
| AdResync = 131072 | 通过 Resync 方法,使用在基本的数据库中可见的数据更新游标。 |
| AdUpdate = 16809984 | 可使用 Update 方法修改现有的数据。 |
| AdUpdateBatch = 65536 | 可以使用批更新(UpdateBatch 和 CancelBatch 方法)将更改组传输给提供者。 |
| AdIndex = 8388608 | 可以使用 Index 属性命名索引。 |
| AdSeek = 4194304 | 可以使用 Seek 方法定位 Recordset 中的行。 |