SQLBindCol

作为一般规则,请考虑使用 SQLBindCol 引发数据转换的含义。绑定转换是客户端进程,所以,举例来说,检索绑定到字符列的浮点值将导致应用程序在提取行时执行浮点到字符的转换。可以使用 Transact-SQL CONVERT 函数将数据转换的开销转给服务器。

SQL Server 实例可以对执行的单个语句返回多个结果行集。每个结果集都必须单独绑定。有关如何绑定多个结果集的信息,请参阅 SQLMoreResults

开发人员可以使用 TargetType 值 SQL_C_BINARY 将列绑定到 SQL Server 特定的 C 数据类型。不可移植绑定到 SQL Server 特定类型的列。SQL Server 特定的已定义 ODBC C 数据类型与 DB-Library 的类型定义匹配,移植应用程序的 DB-Library 开发人员可能需要利用此功能。

报告数据截断对 SQL Server Native Client ODBC 驱动程序而言是一个开销较大的进程。通过确保所有绑定数据缓冲区的宽度足以返回数据,可以避免截断。对于字符数据,在使用字符串终止的默认驱动程序行为时,该宽度应该包括字符串终止符所占的空间。例如,将 SQL Serverchar(5) 列绑定到五个字符的数组将导致每提取五个值就截断一次。将同一列绑定到六个字符的数组可以提供一个用于存储空终止符的字符元素,这样即避免了截断。SQLGetData 可用于有效检索长字符和二进制数据,而无需截断数据。

对于大值数据类型,如果用户提供的缓冲区不够大,无法保存列的全部值,将返回 SQL_SUCCESS_WITH_INFO,并且发出“字符串数据;右侧截断”警告。StrLen_or_IndPtr 参数将包含存储在缓冲区中的字符/字节数。

SQLBindCol 对日期和时间增强功能的支持

日期/时间类型的结果列值将会按照由 SQL 转换为 C中的说明进行转换。请注意,若要将 time 和 datetimeoffset 列检索为它们相应的结构(SQL_SS_TIME2_STRUCT 和 SQL_SS_TIMESTAMPOFFSET_STRUCT),必须将 TargetType 指定为 SQL_C_DEFAULT 或 SQL_C_BINARY。

有关详细信息,请参阅 日期/时间的改进 (ODBC)

SQLBindCol 对大型 CLR UDT 的支持

SQLBindCol 支持大型 CLR 用户定义类型 (UDT)。有关详细信息,请参阅大型 CLR 用户定义类型 (ODBC)

请参阅

概念

其他资源