如何:使用行集绑定 (ODBC)
使用按列绑定
对于每个绑定列,请执行以下操作:
分配一个包含 R(或更多)列缓冲区的数组以存储数据值,其中 R 为行集中的行数。
或者,分配一个包含 R(或更多)列缓冲区的数组以存储数据长度。
调用 SQLBindCol 将列的数据值数组和数据长度数组绑定到行集的列。
调用 SQLSetStmtAttr 以设置下列属性:
将 SQL_ATTR_ROW_ARRAY_SIZE 设置为行集中的行数 (R)。
将 SQL_ATTR_ROW_BIND_TYPE 设置为 SQL_BIND_BY_COLUMN。
将 SQL_ATTR_ROWS FETCHED_PTR 属性设置为指向 SQLUINTEGER 变量,以存储所提取的行数。
将 SQL_ATTR_ROW_STATUS_PTR 设置为指向一个 SQLUSSMALLINT 变量 array[R],以存储行状态指示器。
执行语句。
对 SQLFetch 或 SQLFetchScroll 的每次调用都将检索 R 行并将数据传输到绑定列。
使用按行绑定
分配一个结构 array[R],其中 R 为行集中的行数。该结构针对每列都有一个元素,并且每个元素有两部分:
第一部分是适当数据类型的变量,用于存储列数据。
第二部分是 SQLINTEGER 变量,用于存储列状态指示器。
调用 SQLSetStmtAttr 以设置下列属性:
将 SQL_ATTR_ROW_ARRAY_SIZE 设置为行集中的行数 (R)。
将 SQL_ATTR_ROW_BIND_TYPE 设置为在步骤 1 中分配的结构大小。
将 SQL_ATTR_ROWS_FETCHED_PTR 属性设置为指向 SQLUINTEGER 变量,以存储所提取的行数。
将 SQL_ATTR_PARAMS_STATUS_PTR 设置为指向一个 SQLUSSMALLINT 变量 array[R],以存储行状态指示器。
对于结果集中的每列,调用 SQLBindCol,以使该列的数据值和数据长度指针指向其在步骤 1 中分配的结构数组的第一个元素中的变量。
执行语句。
对 SQLFetch 或 SQLFetchScroll 的每次调用都将检索 R 行并将数据传输到绑定列。