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 complet du fichier ou du mode de persistance. Vous pouvez utiliser le paramètre szPersist pour diriger la sortie persistante vers un nouveau fichier ou 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, aucune modification persistante.
MSIDBOPEN_TRANSACT
Ouvrez une base de données en lecture/écriture en mode transactionnel.
MSIDBOPEN_PATCHFILE
Ajoutez cet indicateur pour indiquer un fichier patch.

[out] phDatabase

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

Valeur de retour

La fonction MsiOpenDatabase retourne les valeurs suivantes :

Remarques

Pour apporter et enregistrer des modifications dans une base de données, ouvrez d’abord la base de données en mode transaction (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 ouverte en mode direct (MSIDBOPEN_DIRECT ou MSIDBOPEN_CREATEDIRECT) avant de fermer le handle de la base de données. L’échec de cette opération peut endommager la base de données.

Étant donné que MsiOpenDatabase lance 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 à mesure qu’ils sortent de l’étendue, alors que vous devez fermer des objets MSIHANDLE en appelant MsiCloseHandle. Pour plus d’informations, consultez Utiliser PMSIHANDLE au lieu de la section HANDLE dans les meilleures pratiques Windows Installer.

Remarque 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 un 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, elles doivent être fermées et rouvertes.
 
Si la fonction échoue, vous pouvez obtenir des informations d’erreur étendues à l’aide de MsiGetLastErrorRecord.

Note

L’en-tête msiquery.h définit MsiOpenDatabase en tant qu’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.

Exigences

Exigence Valeur
client minimum 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
d’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 d’accès aux bases de données générales