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 錯誤的詳細資訊,請參閱 可延伸的儲存引擎錯誤 和 錯誤處理參數。
傳回碼 |
Description |
---|---|
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直接影響。 如果資料表目前開啟,則會在資料表上建立新的資料指標。 資料指標資源是使用 JetSetSystemParameter 搭配 JET_paramMaxCursors來設定。 另請參閱 JetDupCursor。
規格需求
需求 | 值 |
---|---|
用戶端 |
需要 Windows Vista、Windows XP 或 Windows 2000 Professional。 |
Server |
需要 Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。 |
標頭 |
在 Esent.h 中宣告。 |
程式庫 |
使用 ESENT.lib。 |
Dll |
需要ESENT.dll。 |
Unicode |
實作為 JetOpenTableW (Unicode) 和 JetOpenTableA (ANSI) 。 |
另請參閱
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JetCloseTable
JetDupCursor
JetRollback
JetSetSystemParameter
資源參數