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 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 valores siguientes:

Comentarios

Para realizar y guardar los cambios en una base de datos, primero abra la base de datos en la 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 haya abierto en modo directo (MSIDBOPEN_DIRECT o MSIDBOPEN_CREATEDIRECT) antes de cerrar el identificador de la base de datos. Si no lo hace, la base de datos puede resultar dañada.

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 mediante una llamada a MsiCloseHandle. Para más información, consulte la sección Uso de PMSIHANDLE, en lugar de HANDLE en los 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 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 Convenciones para prototipos de función.

Requisitos

Requisito Value
Cliente mínimo compatible 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
Plataforma de destino Windows
Encabezado msiquery.h
Library Msi.lib
Archivo DLL Msi.dll

Consulte también

Ejemplo de base de datos y revisión

Funciones generales de acceso a base de datos