Freigeben über


MsiOpenDatabaseW-Funktion (msiquery.h)

Die MsiOpenDatabase-Funktion öffnet eine Datenbankdatei für den Datenzugriff. Diese Funktion gibt ein Handle zurück, das mit MsiCloseHandlegeschlossen werden soll.

Syntax

UINT MsiOpenDatabaseW(
  [in]  LPCWSTR   szDatabasePath,
  [in]  LPCWSTR   szPersist,
  [out] MSIHANDLE *phDatabase
);

Parameter

[in] szDatabasePath

Gibt den vollständigen pfad oder relativen Pfad zur Datenbankdatei an.

[in] szPersist

Empfängt den vollständigen Pfad zur Datei oder zum Persistenzmodus. Sie können den szPersist Parameter verwenden, um die persistente Ausgabe an eine neue Datei zu leiten oder einen der folgenden vordefinierten Persistenzmodi anzugeben.

Wert Bedeutung
MSIDBOPEN_CREATEDIRECT
Erstellen Sie eine neue Datenbank, den direkten Modus mit Lese-/Schreibzugriff.
MSIDBOPEN_CREATE
Erstellen Einer neuen Datenbank, Transact-Modus Lese-/Schreibzugriff.
MSIDBOPEN_DIRECT
Öffnen Sie eine Datenbank ohne Transaktion direkt mit Lese-/Schreibzugriff.
MSIDBOPEN_READONLY
Öffnen Sie eine Datenbank schreibgeschützt, keine dauerhaften Änderungen.
MSIDBOPEN_TRANSACT
Öffnen Sie eine Datenbank im Transaktionsmodus mit Lese-/Schreibzugriff.
MSIDBOPEN_PATCHFILE
Fügen Sie dieses Flag hinzu, um eine Patchdatei anzugeben.

[out] phDatabase

Zeigen Sie auf die Position des zurückgegebenen Datenbankhandles.

Rückgabewert

Die MsiOpenDatabase-Funktion gibt die folgenden Werte zurück:

Bemerkungen

Um Änderungen an einer Datenbank vorzunehmen und zu speichern, öffnen Sie zuerst die Datenbank in Transaktion (MSIDBOPEN_TRANSACT), erstellen (MSIDBOPEN_CREATE oder MSIDBOPEN_CREATEDIRECT) oder den direkten Modus (MSIDBOPEN_DIRECT). Rufen Sie nach dem Vornehmen der Änderungen immer MsiDatabaseCommit- auf, bevor Sie das Datenbankhandle schließen. MsiDatabaseCommit löscht alle Puffer.

Rufen Sie immer MsiDatabaseCommit für eine Datenbank auf, die im direkten Modus (MSIDBOPEN_DIRECT oder MSIDBOPEN_CREATEDIRECT) geöffnet wurde, bevor Sie das Handle der Datenbank schließen. Andernfalls kann die Datenbank beschädigt werden.

Da MsiOpenDatabase den Datenbankzugriff initiiert, kann sie nicht mit einer ausgeführten Installation verwendet werden.

Beachten Sie, dass es empfohlen wird, Variablen vom Typ PMSIHANDLE zu verwenden, da das Installationsprogramm PMSIHANDLE-Objekte schließt, während sie außerhalb des Gültigkeitsbereichs liegen, während Sie MSIHANDLE-Objekte schließen müssen, indem Sie MsiCloseHandleaufrufen. Weitere Informationen finden Sie unter Verwenden von PMSIHANDLE anstelle des Abschnitts HANDLE im bewährte Methoden für Windows Installer.

Hinweis Wenn eine Datenbank als Ausgabe einer anderen Datenbank geöffnet wird, ist der Zusammenfassungsinformationsstrom der Ausgabedatenbank tatsächlich eine schreibgeschützte Spiegelung der ursprünglichen Datenbank und kann daher nicht geändert werden. Darüber hinaus wird sie nicht mit der Datenbank beibehalten. Um die Zusammenfassungsinformationen für die Ausgabedatenbank zu erstellen oder zu ändern, muss sie geschlossen und erneut geöffnet werden.
 
Wenn die Funktion fehlschlägt, können Sie erweiterte Fehlerinformationen mithilfe MsiGetLastErrorRecordabrufen.

Anmerkung

Der msiquery.h-Header definiert MsiOpenDatabase als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows Installer 5.0 unter Windows Server 2012, Windows 8, Windows Server 2008 R2 oder Windows 7. Windows Installer 4.0 oder Windows Installer 4.5 unter Windows Server 2008 oder Windows Vista. Windows Installer unter Windows Server 2003 oder Windows XP
Zielplattform- Fenster
Header- msiquery.h
Library Msi.lib
DLL- Msi.dll

Siehe auch

einer Datenbank und eines Patchbeispiels

allgemeine Datenbankzugriffsfunktionen