Compartir a través de


Función MsiOpenDatabaseA (msiquery.h)

La función MsiOpenDatabase abre un archivo de base de datos para el acceso a datos. Esta función devuelve un identificador que se debe cerrar mediante MsiCloseHandle.

Sintaxis

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

Parámetros

[in] szDatabasePath

Especifica la ruta de acceso completa o la ruta de acceso relativa al archivo de base de datos.

[in] szPersist

Recibe la ruta de acceso completa al archivo o al modo de persistencia. Puede usar el parámetro szPersist para dirigir la salida persistente a un nuevo archivo o para especificar uno de los siguientes modos de persistencia predefinidos.

Valor Significado
MSIDBOPEN_CREATEDIRECT
Cree una nueva base de datos, lectura y escritura en modo directo.
MSIDBOPEN_CREATE
Cree una nueva base de datos, modo de transacción de lectura y escritura.
MSIDBOPEN_DIRECT
Abra una base de datos de lectura y escritura directa sin transacción.
MSIDBOPEN_READONLY
Abra una base de datos de solo lectura, sin cambios persistentes.
MSIDBOPEN_TRANSACT
Abra una base de datos de lectura y escritura en modo de transacción.
MSIDBOPEN_PATCHFILE
Agregue esta marca para indicar un archivo de revisión.

[out] phDatabase

Puntero a la ubicación del identificador de base de datos devuelto.

Valor devuelto

La función MsiOpenDatabase devuelve los siguientes valores:

Observaciones

Para realizar y guardar los cambios en una base de datos abra primero la base de datos en transacción (MSIDBOPEN_TRANSACT), cree (MSIDBOPEN_CREATE o MSIDBOPEN_CREATEDIRECT) o el modo directo (MSIDBOPEN_DIRECT). Después de realizar los cambios, llame siempre a MsiDatabaseCommit antes de cerrar el identificador de la base de datos. MsiDatabaseCommit vacía todos los búferes.

Llame siempre a MsiDatabaseCommit en una base de datos que se ha abierto en modo directo (MSIDBOPEN_DIRECT o MSIDBOPEN_CREATEDIRECT) antes de cerrar el identificador de la base de datos. Si no se hace esto, puede dañar la base de datos.

Dado que MsiOpenDatabase inicia el acceso a la base de datos, no se puede usar con una instalación en ejecución.

Tenga en cuenta que se recomienda usar variables de tipo PMSIHANDLE porque el instalador cierra los objetos PMSIHANDLE a medida que salen del ámbito, mientras que debe cerrar objetos MSIHANDLE llamando a MsiCloseHandle. Para obtener más información, vea la sección Usar PMSIHANDLE en lugar de HANDLE en la Procedimientos recomendados de Windows Installer.

Nota Cuando se abre una base de datos como salida de otra base de datos, el flujo de información de resumen de la base de datos de salida es realmente un reflejo de solo lectura de la base de datos original y, por lo tanto, no se puede cambiar. Además, no se conserva con la base de datos. Para crear o modificar la información de resumen de la base de datos de salida, debe cerrarse y volver a abrirse.
 
Si se produce un error en la función, puede obtener información de error extendida mediante MsiGetLastErrorRecord.

Nota

El encabezado msiquery.h define MsiOpenDatabase como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows Installer 5.0 en Windows Server 2012, Windows 8, Windows Server 2008 R2 o Windows 7. Windows Installer 4.0 o Windows Installer 4.5 en Windows Server 2008 o Windows Vista. Windows Installer en Windows Server 2003 o Windows XP
de la plataforma de destino de Windows
encabezado de msiquery.h
biblioteca de Msi.lib
DLL de Msi.dll

Consulte también

ejemplo de base de datos y revisión

funciones generales de acceso a bases de datos