JetGetTableColumnInfo 函数

适用于: 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_COLUMNDEFJET_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_COLUMNLISTtableid 成员标识。 必须使用 JetCloseTable 关闭该表。 如果此函数失败,则结构包含未定义的数据。

JET_ColInfoListCompact

pvResult 被解释为 JET_COLUMNLIST 结构。 如果此函数成功,则使用适当的值填充结构。 将打开临时表,并由 JET_COLUMNLISTtableid 成员标识。 必须使用 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

如果出现以下问题,可能会返回此错误:

  • szTableName 的名称不正确。

  • szColumnName 的名称不正确。

JET_errInvalidParameter

如果出现以下问题,可能会返回此错误:

  • 指定了错误的 InfoLevel

  • 传入了 NULL szTableName

  • 缓冲区太小。

备注

JetGetTableColumnInfoJetGetColumnInfo 都检索有关列的信息。 它们之间的区别在于如何识别表:

  • JetGetTableColumnInfo 通过 tableid 标识表

  • JetGetColumnInfodbidszTableName 组合标识表。

使用 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