列数据

重要

Windows 的未来版本中将移除此功能。 避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序。 Microsoft 建议使用驱动程序的游标功能。

游标库使用 SQLBindCol 为绑定到结果集的每个数据缓冲区在缓存中创建一个缓冲区。 当模拟定位的 update 或 delete 语句时,它使用这些缓冲区中的值来构造 WHERE 子句。 当从数据源提取数据和执行定位更新语句时,它会从行集缓冲区更新这些缓冲区。

当游标库从行集缓冲区更新其缓存时,它会根据 SQLBindCol 中指定的 C 数据类型传输数据。 例如,如果行集缓冲区的 C 数据类型SQL_C_SLONG,则游标库传输四个字节的数据;如果它是SQL_C_CHAR且 BufferLength 为 10,则游标库传输 10 字节的数据。 游标库不对其传输的数据执行任何类型的检查或转换。

注意

如果SQL_DATA_AT_EXEC相应的行集缓冲区中的 *StrLen_or_IndPtr 或SQL_LEN_DATA_AT_EXEC宏的结果,则游标库不会更新列的缓存。

更新列时,数据源空白填充固定长度字符数据,并根据需要为零填充固定长度的二进制数据。 例如,数据源将 CHAR (10) 列中的“Smith”存储为“Smith”。 游标库在执行定位的更新语句后将此数据复制到其缓存时,不会在行集缓冲区中填充空白或零填充数据。 因此,如果应用程序要求游标库缓存中的值是空白填充值或零填充值,则在执行定位更新语句之前,它必须空白填充或零填充行集缓冲区中的值。