MsiOpenDatabaseA 函式 (msiquery.h)
MsiOpenDatabase 函式會開啟資料庫檔案以供數據存取。 此函式會傳回應該使用 MsiCloseHandle關閉的句柄。
語法
UINT MsiOpenDatabaseA(
[in] LPCSTR szDatabasePath,
[in] LPCSTR szPersist,
[out] MSIHANDLE *phDatabase
);
參數
[in] szDatabasePath
指定資料庫檔案的完整路徑或相對路徑。
[in] szPersist
接收檔案或持續性模式的完整路徑。 您可以使用 szPersist 參數,將持續性輸出導向至新檔案,或指定下列其中一個預先定義的持續性模式。
[out] phDatabase
傳回之資料庫句柄位置的指標。
傳回值
MsiOpenDatabase 函式會傳回下列值:
言論
若要對資料庫進行變更並儲存,請先在交易中開啟資料庫(MSIDBOPEN_TRANSACT)、建立(MSIDBOPEN_CREATE或MSIDBOPEN_CREATEDIRECT),或直接 (MSIDBOPEN_DIRECT) 模式。 進行變更之後,請一律先呼叫 MsiDatabaseCommit,再關閉資料庫句柄。 MsiDatabaseCommit 會排清所有緩衝區。
在關閉資料庫的句柄之前,請一律在直接模式 MSIDBOPEN_CREATEDIRECT MSIDBOPEN_DIRECT中開啟的資料庫上呼叫 MsiDatabaseCommit。 無法這麼做可能會損毀資料庫。
因為 MsiOpenDatabase 起始數據庫存取權,所以無法搭配執行中的安裝使用。
請注意,建議使用 PMSIHANDLE 類型的變數,因為安裝程式會在 PMSIHANDLE 物件超出範圍時關閉 PMSIHANDLE 物件,而您必須呼叫 MsiCloseHandle來關閉 MSIHANDLE 物件。 如需詳細資訊,請參閱 Windows Installer 最佳做法中的 使用 PMSIHANDLE 而非 HANDLE 一節。
注意
msiquery.h 標頭會將 MsiOpenDatabase 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows Server 2012、Windows 8、Windows Server 2008 R2 或 Windows 7 上的 Windows Installer 5.0。 Windows Server 2008 或 Windows Vista 上的 Windows Installer 4.0 或 Windows Installer 4.5。 Windows Server 2003 或 Windows XP 上的 Windows Installer |
目標平臺 | 窗戶 |
標頭 | msiquery.h |
連結庫 | Msi.lib |
DLL | Msi.dll |