SQLDescribeCol 和 SQLColAttribute

SQLDescribeCol 和 SQLColAttribute 用于检索结果集元数据。 这两个函数之间的差异是,SQLDescribeCol 始终返回相同的五个信息片段(列的名称、数据类型、精度、小数位数和可为 null 性),而 SQLColAttribute 返回应用程序请求的单个信息片段。 但是,SQLColAttribute 可以返回更丰富的元数据选择,包括列的区分大小写、显示大小、可更新性和可搜索性。

许多应用程序(尤其是仅显示数据的应用程序)只需要 SQLDescribeCol 返回的元数据。 对于这些应用程序,使用 SQLDescribeCol 比 SQLColAttribute 更快,因为信息是在单个调用中返回的。 其他应用程序(尤其是更新数据的应用程序)需要 SQLColAttribute 返回的其他元数据,因此使用这两个函数。 此外,SQLColAttribute 支持特定于驱动程序的元数据;有关详细信息,请参阅特定于驱动程序的数据类型、描述符类型、信息类型、诊断类型和属性

应用程序可以在语句准备好或执行后且结果集上的游标关闭之前随时检索结果集元数据。 极少数应用程序需要在准备好语句后以且执行结果集元数据之前使用。 如果可能,应用程序应等待检索元数据,直到执行语句后,因为某些数据源无法返回已准备语句的元数据,并且模拟驱动程序中的此功能通常是一个缓慢的过程。 例如,驱动程序可以通过将 SELECT 语句的 WHERE 子句替换为 WHERE 1 = 2 并执行生成的语句来生成零行结果集。

从数据源检索元数据通常很昂贵。 因此,只要结果集上的游标处于打开状态,驱动程序应缓存从服务器检索到的任何元数据并保留这些元数据。 此外,应用程序应仅请求绝对需要的元数据。