JetOpenTable 函数

适用于: Windows |Windows Server

JetOpenTable 函数

JetOpenTable 函数在以前创建的表上打开光标。

    JET_ERR JET_API JetOpenTable(
      __in          JET_SESID sesid,
      __in          JET_DBID dbid,
      __in          const tchar* szTableName,
      __in_opt      const void* pvParameters,
      __in          unsigned long cbParameters,
      __in          JET_GRBIT grbit,
      __out         JET_TABLEID* ptableid
    );

参数

sesid

要使用的数据库会话上下文。

dbid

用于查找表的数据库标识符。

szTableName

要打开的表的名称。

pvParameters

已弃用。 设置为 NULL

cbParameters

已弃用。 将 设置为 0 (零) 。

grbit

指定以下零个或多个选项的一组位。

含义

JET_bitTableDenyRead

另一个数据库会话无法打开该表进行读取访问。

JET_bitTableDenyWrite

该表不能由另一个数据库会话打开以供写入访问。

JET_bitTableNoCache

不要缓存此表的页面。

JET_bitTablePermitDDL

允许对标记为 FixedDDL 的表进行 DDL 修改。 此选项必须与 JET_bitTableDenyRead 选项一起使用。

JET_bitTablePreread

提供一个提示,指出表可能不在缓冲区缓存中,并且预读取可能有利于性能。

JET_bitTableReadOnly

请求对表的只读访问权限。

JET_bitTableSequential

表应非常主动地从磁盘中预取,因为应用程序将按顺序对其进行扫描。

JET_bitTableUpdatable

请求对表的写入访问权限。

ptableid

成功时,指向表的标识符。 失败时, ptableid 的内容未定义。

返回值

此函数返回具有以下返回代码之一 的JET_ERR 数据类型。 有关可能的 ESE 错误的详细信息,请参阅 可扩展存储引擎错误错误处理参数

返回代码

说明

JET_errSuccess

操作已成功完成。

JET_errInvalidDatabaseId

dbid 不是有效的数据库标识符。

JET_errInvalidgrbit

传入了 grbit 的不良组合。

JET_errInvalidName

szTableName 中给定的名称无效。

有关有效表名的详细信息,请参阅 JetCreateTable 中的 szTableName 参数。

JET_errObjectNotFound

尝试打开数据库中不存在的表。

JET_errOutOfCursors

操作失败,因为引擎无法分配打开新游标所需的资源。 请参阅“备注”部分。

JET_errTableInUse

该表正由另一个数据库操作使用。

JET_wrnTableInUseBySystem

指示系统正在使用表的非严重警告。

JET_errTableLocked

表被另一个数据库操作锁定。

JET_errTooManyOpenTables

尝试一次打开过多的唯一表。 请参阅“备注”部分。

备注

使用 JetOpenTable 打开的表通常应使用 JetCloseTable 关闭。 当在事务中调用 JetOpenTable 并使用 JetRollback) 回滚事务 (时,会发生此规则的例外情况。 回滚事务时,表会自动关闭。 在这种情况下,使用 JetCloseTable 关闭表是错误的。

使用 JetOpenTable (打开系统表是合法的,例如 MSysObjects、MSysUnicodeFixup) 。 系统表的架构可能会更改,因此不建议访问系统表。 可同时打开的唯一表数直接受 JET_paramMaxOpenTables的影响。 如果表当前处于打开状态,则会在表上创建新的游标。 游标资源是使用 JetSetSystemParameterJET_paramMaxCursors 配置的。 另请参阅 JetDupCursor

要求

要求

客户端

需要 Windows Vista、Windows XP 或 Windows 2000 专业版。

服务器

需要 Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。

标头

在 Esent.h 中声明。

Library

使用 ESENT.lib。

DLL

需要ESENT.dll。

Unicode

实现为 JetOpenTableW (Unicode) 和 JetOpenTableA (ANSI) 。

另请参阅

JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JetCloseTable
JetDupCursor
JetRollback
JetSetSystemParameter
资源参数