MsiOpenDatabaseA, fonction (msiquery.h)

La fonction MsiOpenDatabase ouvre un fichier de base de données pour l’accès aux données. Cette fonction retourne un handle qui doit être fermé à l’aide de MsiCloseHandle.

Syntaxe

UINT MsiOpenDatabaseA(
  [in]  LPCSTR    szDatabasePath,
  [in]  LPCSTR    szPersist,
  [out] MSIHANDLE *phDatabase
);

Paramètres

[in] szDatabasePath

Spécifie le chemin d’accès complet ou relatif au fichier de base de données.

[in] szPersist

Reçoit le chemin d’accès complet au fichier ou le mode de persistance. Vous pouvez utiliser le paramètre szPersist pour diriger la sortie persistante vers un nouveau fichier ou pour spécifier l’un des modes de persistance prédéfinis suivants.

Valeur Signification
MSIDBOPEN_CREATEDIRECT
Créez une base de données en mode direct en lecture/écriture.
MSIDBOPEN_CREATE
Créez une base de données en mode transact en lecture/écriture.
MSIDBOPEN_DIRECT
Ouvrez une base de données en lecture/écriture directe sans transaction.
MSIDBOPEN_READONLY
Ouvrez une base de données en lecture seule, sans modification persistante.
MSIDBOPEN_TRANSACT
Ouvrez une base de données en lecture/écriture en mode transaction.
MSIDBOPEN_PATCHFILE
Ajoutez cet indicateur pour indiquer un fichier de correctif.

[out] phDatabase

Pointeur vers l’emplacement du handle de base de données retourné.

Valeur retournée

La fonction MsiOpenDatabase retourne les valeurs suivantes :

Remarques

Pour apporter et enregistrer des modifications à une base de données, ouvrez d’abord la base de données en mode transactionnel (MSIDBOPEN_TRANSACT), créez (MSIDBOPEN_CREATE ou MSIDBOPEN_CREATEDIRECT) ou direct (MSIDBOPEN_DIRECT). Après avoir apporté les modifications, appelez toujours MsiDatabaseCommit avant de fermer le handle de base de données. MsiDatabaseCommit vide toutes les mémoires tampons.

Appelez toujours MsiDatabaseCommit sur une base de données qui a été ouverte en mode direct (MSIDBOPEN_DIRECT ou MSIDBOPEN_CREATEDIRECT) avant de fermer le handle de la base de données. Si vous ne le faites pas, vous risquez d’endommager la base de données.

MsiOpenDatabase initie l’accès à la base de données, il ne peut pas être utilisé avec une installation en cours d’exécution.

Notez qu’il est recommandé d’utiliser des variables de type PMSIHANDLE, car le programme d’installation ferme les objets PMSIHANDLE en dehors de leur portée, alors que vous devez fermer les objets MSIHANDLE en appelant MsiCloseHandle. Pour plus d’informations, consultez la section Utiliser PMSIHANDLE au lieu de HANDLE dans les Bonnes pratiques de Windows Installer.

Note Lorsqu’une base de données est ouverte en tant que sortie d’une autre base de données, le flux d’informations récapitulatives de la base de données de sortie est en fait une miroir en lecture seule de la base de données d’origine et, par conséquent, ne peut pas être modifié. En outre, elle n’est pas conservée avec la base de données. Pour créer ou modifier les informations récapitulatives de la base de données de sortie, elle doit être fermée et rouverte.
 
Si la fonction échoue, vous pouvez obtenir des informations d’erreur étendues à l’aide de MsiGetLastErrorRecord.

Notes

L’en-tête msiquery.h définit MsiOpenDatabase comme un alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Installer 5.0 sur Windows Server 2012, Windows 8, Windows Server 2008 R2 ou Windows 7. Windows Installer 4.0 ou Windows Installer 4.5 sur Windows Server 2008 ou Windows Vista. Windows Installer sur Windows Server 2003 ou Windows XP
Plateforme cible Windows
En-tête msiquery.h
Bibliothèque Msi.lib
DLL Msi.dll

Voir aussi

Un exemple de base de données et de correctif

Fonctions générales d’accès à la base de données