绑定结果集列

应用程序可以绑定结果集选择的任意数目或最少的列,包括完全不绑定任何列。 提取数据行时,驱动程序会将绑定列的数据返回到应用程序。 应用程序是否绑定结果集中的所有列取决于应用程序。 例如,生成报表的应用程序通常具有固定格式;此类应用程序创建一个结果集,其中包含报表中使用的所有列,然后绑定和检索所有这些列的数据。 显示满满数据的屏幕的应用程序有时允许用户决定要显示的列;此类应用程序创建一个结果集,其中包含用户可能想要的所有列,但仅为用户选择的列绑定和检索数据。

可以通过调用 SQLGetData 检索未绑定列的数据。 这通常被调用以检索长数据,这些数据通常超过单个缓冲区的长度,必须在部分检索。

即使在提取完行之后,也可以随时绑定列。 但是,新绑定在下次提取行之前不会生效;它们不会应用于已提取的行中的数据。

变量会保持绑定到列,直到另一个变量绑定到该列,或者使用 NULL 指针作为变量地址调用SQLBindCol来取消绑定,或者使用 SQL_UNBIND 选项调用SQLFreeStmt来取消绑定所有列,或者直到语句被释放。 出于此原因,应用程序必须确保所有绑定变量在绑定期间都保持有效。 有关详细信息,请参阅 分配和释放缓冲区

由于列绑定只是与语句结构关联的信息,因此可以按任意顺序设置它们。 它们也独立于结果集。 例如,假设应用程序绑定以下 SQL 语句生成的结果集的列:

SELECT * FROM Orders  

如果应用程序随后执行 SQL 语句

SELECT * FROM Lines  

在同一语句句柄上,第一个结果集的列绑定仍然有效,因为这些绑定存储在语句结构中。 在大多数情况下,这是一种糟糕的编程做法,应避免这样做。 相反,应用程序应使用SQL_UNBIND选项调用 SQLFreeStmt ,以取消绑定所有旧列,然后绑定新列。