ASP Field对象
每个Recordset对象包含由Field对象组成的Fields集合,每个Field对象代表结果集合中的一列数据,通过使用Field对象能够获得结果集合中每一列字段的详细信息。Field对象的属性、方法和集合如表9-9所示。Fields集合的属性、方法如表9-10所示。
表9-9 Field对象的属性、方法和集合
类型 | 名称 | 解释 |
属性 | ActualSize | 返回字段的实际长度 |
Attributes | 规定对字段值的处理特性 | |
DefinedSize | 返回字段的定义长度 | |
Name | 返回字段名 | |
NumericSale | 指定数值型字段值所精确到的小数点的位数 | |
OriginalValue | 取得记录集中字段未被修改前的原始值 | |
Precision | 指定数值型字段值所允许的最大位数 | |
Type | 返回字段的数据类型 | |
UnderyingValue | 取得数据源中字段的当前值 | |
Value | 表示字段在记录集中的当前值 | |
方法 | AppendChunk | 把长文本或二进制数据合并到字段中 |
GetChunk | 从字段中取出长文本或二进制数据中的部分或全部内容 | |
集合 | Properies | Field 对象属性集合 |
表9-10 Fields集合的属性、方法
名称 | 解释 |
Count | 属性,返回 Fields 集合中的字段数目 |
Item | 属性,利用参数 Index 访问 Fields 集合中的指定字段 |
Refresh | 方法,刷新 Fields 集合 |
对数据的查询、新增、删除及修改等操作并不是直接对着数据源进行的。在应用程序和数据源之间有一个数据缓冲区,在ASP中称为Fields集合或记录集,如图9-6所示。
图9-6 Fields集合的作用
一个Recordset对象实例拥有一个Fields集合,该集合对应着数据源中的一张数据表,根据程序处理需要,包含数据表全部或部分的字段以及全部或部分的数据记录。把数据表的每一列定义为一个Field对象,那么,从数据表中取了多少列数据就有多少个Field对象。由于一条数
据记录被拆分到各个Field对象中,为了保证数据记录的一致性,指针相当重要。任意时刻,指针都唯一地指向一条记录,这条记录称为当前记录,指针的移动控制由Recordset完成。具体地说,是Recordset的7个指针属性管理了指针的移动。
Field对象的属性分为两类:字段属性和记录属性。
Field对象的字段属性有字段名、字段定义长度、字段实际长度和数据类型,对于数值型字段,还有小数点的位置和允许记录的最大数值范围,这些属性都和数据库中相应的字段属性是一致的。Field对象有一个特殊属性,即Attributes,它表示某字段在当前指针位置的数据值的属性,其取值见表9-11。
表9-11 Attributes属性值
常量 | 值 | 说明 |
AdFldMayEFER | 2 | 不允许重新由数据库更新数据 |
AdFldUpdatable | 4 | asp数据允许写入 |
AdFldUnknowUpdatable | 8 | 不能确定是否可以写入 |
AdFldFixed | 16 | 固定长度 |
AdFldIsNullable | 3 | 可以输入空值 |
AdFldMayBeNull | 64 | 可以读取空值 |
AdFldLong | 128 | 该字段数据类型为长二进制 |
AdFldRowID | 25 | 包含行标识符 |
AdFldRowVersion | 512 | 显示该字段内数据最后一次更新的时间 |
AdFldCacheDferred | 4096 | 可以从缓存中读取该字段数据 |
Field对象的记录属性有实际值(Value)、初始值(OriginalValue)和数据源值(UnderlyingValue),在数据表中,某字段的当前记录只有一个数据,在ADO中,为了方便数据的处理,用3个属性来记录这个值。调用Recordset对象的CancelUpdate和CancelBatch方法,就可以将修改后的各字段值(Value)恢复为相应的OrignalValue,OrignalValue是为了修改后恢复原值而使用的。UnderlyingValue属性和OrignalValue不同,UnderlyingValue返回的是数据库中的当前值,OrignalValue返回的是打开Fields集合时的初始值,在此期间,数据源中值可能已经被其他用户更新过了,从而造成两个属性值不相等。通过判断这两个属性值,可以解决多用户批处理冲突问题。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论