适用于: Windows |Windows Server
JetGetTableColumnInfo 函数
JetGetTableColumnInfo 函数检索有关表列的信息。
JET_ERR JET_API JetGetTableColumnInfo(
  __in          JET_SESID sesid,
  __in          JET_TABLEID tableid,
  __in          const tchar* szColumnName,
  __out         void* pvResult,
  __in          unsigned long cbMax,
  __in          unsigned long InfoLevel
);
parameters
sesid
用于 API 调用的数据库会话上下文。
tableid
包含要提取其信息的列的表。
szColumnName
要为其提取信息的列的名称。
pvResult
指向将接收信息的缓冲区的指针。 缓冲区的类型取决于 InfoLevel。 必须将调用方配置为适当地对齐缓冲区。
cbMax
在 pvResult 中传递的缓冲区的大小(以字节为单位)。
InfoLevel
将为 szColumnName 指定的列检索的信息类型。 pvResult 中存储的数据的格式取决于 InfoLevel。 有关临时表的架构,请参阅 JET_COLUMNLIST。
- JET_ColInfoListSortColumnid将按 columnid 对临时表进行排序。 
- JET_ColInfoListCompact将压缩输出。 有关压缩输出的详细信息,请参阅 JET_COLUMNLIST。 
可以为此参数设置以下选项:
| 值 | 含义 | 
|---|---|
| JET_ColInfo | pvResult 被解释为 JET_COLUMNDEF, JET_COLUMNDEF结构的字段 被适当填充。 JET_ColInfo和JET_ColInfoByColid都检索相同的信息。 | 
| JET_ColInfoBase | pvResult 被解释为 JET_COLUMNBASE 结构。 这类似于 JET_COLUMNDEF 结构。 如果此函数成功,则使用适当的值填充结构。 如果此函数失败,则结构包含未定义的数据。 | 
| JET_ColInfoByColid | pvResult 被解释为 JET_COLUMNDEF,但此 InfoLevel 指示请求的列 (szColumName) 不是字符串列名称,而是指向 JET_COLUMNID的指针。 JET_ColInfo和JET_ColInfoByColid都检索相同的信息。 | 
| JET_ColInfoList | pvResult 被解释为 JET_COLUMNLIST 结构。 如果此函数成功,则使用适当的值填充结构。 将打开临时表,并由 JET_COLUMNLIST 的 tableid 成员标识。 必须使用 JetCloseTable 关闭该表。 如果此函数失败,则结构包含未定义的数据。 | 
| JET_ColInfoListCompact | pvResult 被解释为 JET_COLUMNLIST 结构。 如果此函数成功,则使用适当的值填充结构。 将打开临时表,并由 JET_COLUMNLIST 的 tableid 成员标识。 必须使用 JetCloseTable 关闭该表。 如果此函数失败,则结构包含未定义的数据。 | 
| JET_ColInfoListSortColumnid | 与JET_ColInfoList相同,但是生成的表按 columnid 而不是列名进行排序。 | 
| JET_ColInfoSysTabCursor | JET_ColInfoSysTabCursor已弃用,使用它将返回JET_errFeatureNotAvailable。 | 
| JET_ColInfoBaseByColId | 与 JET_ColInfoBase 相同, pvResult 被解释为 JET_COLUMNBASE,但此 InfoLevel 指示请求的列 (szColumName) 不是字符串列名称,而是指向 JET_COLUMNID的指针。 Windows Vista: 这在 Windows Vista 及更高版本中可用。 | 
| JET_ColInfoGrbitNonDerivedColumnsOnly | 仅当表派生自模板) 时,才返回 (非派生列。 当基本 InfoLevel JET_ColInfoList时,此值可以从逻辑上或放入 InfoLevel 中。 Windows Vista: 此值在 Windows Vista 中引入。 | 
| JET_ColInfoGrbitMinimalInfo | 仅返回每列的列名和列 id。 当基本 InfoLevel JET_ColInfoList时,此值可以从逻辑上或放入 InfoLevel 中。 Windows Vista: 此值在 Windows Vista 中引入。 | 
| JET_ColInfoGrbitSortByColumnid | 按 columnid 对返回的列列表进行排序 (默认为按列名) 对列表进行排序。 当基本 InfoLevel JET_ColInfoList时,此值可以从逻辑上或放入 InfoLevel 中。 Windows Vista: 此值在 Windows Vista 中引入。 | 
返回值
此函数返回具有以下返回代码之一 的JET_ERR 数据类型。 有关可能的 ESE 错误的详细信息,请参阅 可扩展存储引擎错误 和 错误处理参数。
| 返回代码 | 说明 | 
|---|---|
| JET_errSuccess | 操作已成功完成。 | 
| JET_errColumnNotFound | 在表中找不到名为 szColumnName 的列。 | 
| JET_errFeatureNotAvailable | 指定了错误的 InfoLevel 。 | 
| JET_errInvalidName | 如果出现以下问题,可能会返回此错误: 
 | 
| JET_errInvalidParameter | 如果出现以下问题,可能会返回此错误: 
 | 
备注
JetGetTableColumnInfo 和 JetGetColumnInfo 都检索有关列的信息。 它们之间的区别在于如何识别表:
- JetGetTableColumnInfo 通过 tableid 标识表。 
- JetGetColumnInfo 按 dbid 和 szTableName 组合标识表。 
使用 JET_ColInfoList、JET_ColInfoListSortColumnid 或 JET_ColInfoListCompact 检索数据时,将打开临时表。 临时表包含数据, JET_COLUMNLIST 结构包含足够的信息来遍历临时表。 临时表必须使用 JetCloseTable 关闭。
要求
| 要求 | 值 | 
|---|---|
| 客户端 | 需要 Windows Vista、Windows XP 或 Windows 2000 Professional。 | 
| 服务器 | 需要 Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。 | 
| 标头 | 在 Esent.h 中声明。 | 
| Library | 使用 ESENT.lib。 | 
| DLL | 需要ESENT.dll。 | 
| Unicode | 实现为 JetGetTableColumnInfoW (Unicode) 和 JetGetTableColumnInfoA (ANSI) 。 | 
另请参阅
              可扩展存储引擎错误
              错误处理参数
              JET_COLUMNBASE
              JET_COLUMNDEF
              JET_COLUMNID
              JET_COLUMNLIST
              JET_ERR
              JET_GRBIT
              JET_SESID
              JET_TABLEID
              JetCloseTable
              JetGetColumnInfo
              JetGetTableColumnInfo