Поделиться через


Функция 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

Разрешает изменение DDL в таблицах, помеченных как FixedDDL. Этот параметр необходимо использовать с параметром 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 .

Дополнительные сведения о допустимых именах таблиц см. в разделе Параметр szTableName в JetCreateTable.

JET_errObjectNotFound

Предпринята попытка открыть таблицу, которая не существует в базе данных.

JET_errOutOfCursors

Операция завершилась сбоем, так как подсистеме не удается выделить ресурсы, необходимые для открытия нового курсора. См. раздел «Примечания».

JET_errTableInUse

Таблица используется другой операцией базы данных.

JET_wrnTableInUseBySystem

Некритичное предупреждение, указывающее, что таблица используется системой.

JET_errTableLocked

Таблица заблокирована другой операцией базы данных.

JET_errTooManyOpenTables

Предпринята попытка одновременного открытия слишком большого количества уникальных таблиц. См. раздел «Примечания».

Комментарии

Таблицы, открытые с помощью JetOpenTable , обычно следует закрывать с помощью JetCloseTable. Исключение из этого правила возникает, когда в транзакции вызывается JetOpenTable и выполняется откат транзакции (с помощью JetRollback). При откате транзакции таблица автоматически закрывается. В этом случае при закрытии таблицы с помощью JetCloseTable возникает ошибка.

Можно открывать системные таблицы с помощью JetOpenTable (например, MSysObjects, MSysUnicodeFixup). Схема системных таблиц может измениться, поэтому доступ к системным таблицам не рекомендуется. Количество уникальных таблиц, которые можно открыть одновременно, напрямую зависит от JET_paramMaxOpenTables. Если таблица в данный момент открыта, в ней будет создан новый курсор. Ресурсы курсора настраиваются с помощью JetSetSystemParameter с JET_paramMaxCursors. Также см . Раздел JetDupCursor.

Требования

Требование Значение

Клиент

Требуется Windows Vista, Windows XP или Windows 2000 Профессиональная.

Сервер

Требуется Windows Server 2008, Windows Server 2003 или Windows 2000 Server.

Верхняя часть

Объявлено в Esent.h.

Библиотека

Используйте ESENT.lib.

DLL

Требуется ESENT.dll.

Юникод

Реализовано как JetOpenTableW (Юникод) и JetOpenTableA (ANSI).

См. также:

JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JetCloseTable
JetDupCursor
JetRollback
JetSetSystemParameter
Параметры ресурсов