JET_SETCOLUMN 结构

适用于: Windows |Windows Server

JET_SETCOLUMN 结构

JET_SETCOLUMN 结构包含 JetSetColumns 的输入和输出参数。 结构中的字段描述要设置的列值、设置方式以及从何处获取列集数据。

    typedef struct {
      JET_COLUMNID columnid;
      const void* pvData;
      unsigned long cbData;
      JET_GRBIT grbit;
      unsigned long ibLongValue;
      unsigned long itagSequence;
      JET_ERR err;
    } JET_SETCOLUMN;

成员

columnid

要设置的列的列标识符。

pvData

指向要设置为列的数据的指针。

cbData

分配的大小(以字节为单位),从 pvData 开始(以字节为单位)。

grbit

包含用于此调用的选项的一组位,其中包括以下零个或多个内容。

含义

JET_bitSetAppendLV

将数据追加到 JET_coltypLongTextJET_coltypLongBinary类型的列。 可以通过确定现有长值的大小并在 psetinfo 中指定 ibLongValue 来实现相同的行为。 但是,使用此 grbit 更简单,因为不需要知道现有列值的大小。

JET_bitSetOverwriteLV

将现有的 long 值替换为新数据。 使用此选项时,好像在设置新数据之前,现有 long 值已设置为 0 (零) 长度。

JET_bitSetSizeLV

将输入缓冲区解释为要设置为给定 columnid 描述的长值的长度的整数字节数,如果提供,则为 psetinfo-itagSequence> 中的序列号。 如果给定的大小大于现有列值,则列将扩展为 0。 如果大小小于现有列值,则会截断该值。

JET_bitSetZeroLength

将值设置为零长度。 通常,通过传递 cbMax 0 将列值设置为 NULL。 但是,对于某些类型(例如 JET_coltypText),列值的长度可以是 0 而不是 NULL,此选项用于区分 NULL 和 0 长度。

JET_bitSetSeparateLV

强制将长值 (JET_coltypLongTextJET_coltypLongBinary类型的列)与记录数据的其余部分分开存储。 当长值的大小阻止它与剩余记录数据一起存储时,通常会发生这种情况。 但是,此选项可用于强制单独存储长值。 请注意,不能强制分隔大小为 4 个字节或更小的长值。 在这种情况下,将忽略 选项。

JET_bitSetUniqueMultiValues

在多值列中强制实施非重复值。 此选项将源列数据(没有任何转换)与其他现有列值进行比较,如果找到重复值,则返回错误。 如果提供了此选项,则也不能提供JET_bitSetAppendLv、JET_bitSetOverwriteLV和JET_bitSetSizeLV。

JET_bitSetUniqueNormalizedMultiValues

在多值列中强制实施非重复值。 此选项将列数据的键规范化转换与其他经过类似转换的现有列值进行比较,如果找到重复值,则返回错误。 如果提供了此选项,则也不能提供JET_bitSetAppendLv、JET_bitSetOverwriteLV和JET_bitSetSizeLV。

JET_bitSetRevertToDefaultValue

使列在后续检索列操作中返回默认列值。 删除所有现有列值。 此选项仅适用于标记、稀疏或多值列。

JET_bitSetIntrinsicLV

尽可能保留与剩余记录数据一起存储的长值、 类型为 JET_coltypLongText 或 JET_coltypeLongBinary 的列。 通常,当长列的长度超过 1024 字节时,将单独存储,否则会导致记录长度超过其与页面大小相关的大小限制。 但是,如果设置了此选项,则设置列操作将失败并出现错误JET_errColumnTooBig,而不是将此列值与其余记录数据分开存储。

ibLongValue

要从 类型为 JET_coltypLongBinaryJET_coltypLongText 的列检索的第一个字节的偏移量。

itagSequence

描述多值列中值的序列号。 itagSequence 为 0 表示应将列值集添加为多值列的新实例。

err

从设置列操作返回的错误代码和警告。

要求

要求

客户端

需要 Windows Vista、Windows XP 或 Windows 2000 Professional。

服务器

需要 Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。

标头

在 Esent.h 中声明。

另请参阅

JET_COLTYP
JET_COLUMNID
JET_ERR
JET_GRBIT
JetSetColumns