如何:使用行集绑定 (ODBC)

使用按列绑定

  1. 对于每个绑定列,请执行以下操作:

    • 分配一个包含 R(或更多)列缓冲区的数组以存储数据值,其中 R 为行集中的行数。

    • 或者,分配一个包含 R(或更多)列缓冲区的数组以存储数据长度。

    • 调用 SQLBindCol 将列的数据值数组和数据长度数组绑定到行集的列。

  2. 调用 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],以存储行状态指示器。

  3. 执行语句。

  4. SQLFetchSQLFetchScroll 的每次调用都将检索 R 行并将数据传输到绑定列。

使用按行绑定

  1. 分配一个结构 array[R],其中 R 为行集中的行数。该结构针对每列都有一个元素,并且每个元素有两部分:

    • 第一部分是适当数据类型的变量,用于存储列数据。

    • 第二部分是 SQLINTEGER 变量,用于存储列状态指示器。

  2. 调用 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],以存储行状态指示器。

  3. 对于结果集中的每列,调用 SQLBindCol,以使该列的数据值和数据长度指针指向其在步骤 1 中分配的结构数组的第一个元素中的变量。

  4. 执行语句。

  5. SQLFetchSQLFetchScroll 的每次调用都将检索 R 行并将数据传输到绑定列。