Compartir por


MFC: Utilizar clases de base de datos sin documentos ni vistas

A veces, es posible que no quiera usar la arquitectura de documento o vista del marco en las aplicaciones de base de datos. En este tema se explica:

Momentos en que no es necesario usar documentos

Algunas aplicaciones tienen un concepto distinto de un documento. Estas aplicaciones suelen cargar todo o la mayor parte de un archivo desde el almacenamiento a la memoria con un comando Abrir archivo. Escriben el archivo actualizado de nuevo en el almacenamiento a la vez con un comando Guardar archivo o Guardar como. Lo que ve el usuario es un archivo de datos.

Sin embargo, algunas categorías de aplicaciones no requieren un documento. Las aplicaciones de base de datos funcionan en términos de transacciones. La aplicación selecciona registros de una base de datos y los presenta al usuario, a menudo de uno en uno. Lo que ve el usuario suele ser un único registro actual, que podría ser el único en la memoria.

Si la aplicación no requiere un documento para almacenar datos, puede prescindir de alguna o todas las arquitecturas de documento o vista del marco. La cantidad de la que prescinda depende del enfoque que prefiera. Puede hacer lo siguiente:

  • Usar un documento mínimo como un lugar para almacenar una conexión al origen de datos, pero prescindir de características normales del documento, como la serialización. Esto resulta útil cuando desea varias vistas de los datos y desea sincronizar todas las vistas, actualizarlas todas a la vez, etc.

  • Usar una ventana de marco en la que se dibuja directamente, en lugar de usar una vista. En este caso, se omite el documento y se almacenan los datos o conexiones de datos en el objeto de ventana de marco.

Opciones del Asistente para aplicaciones para documentos y vistas

El Asistente para aplicaciones MFC tiene varias opciones en Seleccionar compatibilidad con bases de datos, que se muestran en la tabla siguiente. Si usa el Asistente para aplicaciones MFC para crear una aplicación, todas estas opciones generan aplicaciones con documentos y vistas. Algunas opciones proporcionan documentos y vistas que omiten la funcionalidad de documento innecesaria. Para obtener más información, vea Compatibilidad con bases de datos, Asistente para aplicaciones MFC.

Opción Ver Documento
Ninguna Derivado de CView. No proporciona compatibilidad con bases de datos. Ésta es la opción predeterminada.

Si selecciona la opción Compatibilidad con la arquitectura de documento/vista en la página Tipo de aplicación, Asistente para aplicaciones MFC, obtendrá compatibilidad completa con documentos, incluida la serialización y los comandos Nuevo, Abrir, Guardar y Guardar como en el menú Archivo. Consulte Aplicaciones sin documento.
Solo archivos de encabezado Derivado de CView. Proporciona el nivel básico de compatibilidad con bases de datos para la aplicación.

Incluye Afxdb.h. Agrega bibliotecas de vínculos, pero no crea ninguna clase específica de la base de datos. Más adelante, puede crear conjuntos de registros y usarlos para examinar y actualizar registros.
Vista de base de datos sin compatibilidad con archivos Se deriva de CRecordView. Proporciona compatibilidad con documentos, pero no con la serialización. El documento puede almacenar el conjunto de registros y coordinar varias vistas; no admite la serialización ni los comandos Nuevo, Abrir, Guardar y Guardar como. Consulte Aplicaciones con documentos mínimos. Si incluye una vista de base de datos, debe especificar el origen de los datos.

Incluye archivos de encabezado de base de datos, bibliotecas de vínculos, una vista de registros y un conjunto de registros. (Disponible solo para aplicaciones con la opción Compatibilidad con la arquitectura de documento/vista seleccionada en la página Tipo de aplicación, Asistente para aplicaciones MFC).
Vista de base de datos con compatibilidad con archivos Se deriva de CRecordView. Proporciona compatibilidad completa con documentos, incluidos los comandos de menú Archivo relacionados con documentos y serialización. Por lo general, las aplicaciones de base de datos funcionan registro a registro en lugar de hacerlo archivo a archivo, por lo que no necesitan serialización. Sin embargo, es posible que tenga un uso especial para la serialización. Consulte Aplicaciones con documentos mínimos. Si incluye una vista de base de datos, debe especificar el origen de los datos.

Incluye archivos de encabezado de base de datos, bibliotecas de vínculos, una vista de registros y un conjunto de registros. (Disponible solo para aplicaciones con la opción Compatibilidad con la arquitectura de documento/vista seleccionada en la página Tipo de aplicación, Asistente para aplicaciones MFC).

Para obtener una explicación de las alternativas a la serialización y los usos alternativos para la serialización, consulte Serialización: Serialización frente a entrada y salida de base de datos.

Aplicaciones con documentos mínimos

El Asistente para aplicaciones MFC tiene dos opciones que admiten aplicaciones de acceso a datos basadas en formularios. Cada opción crea una clase de vista derivada de CRecordView y un documento. Difieren en lo que dejan fuera del documento.

Documento sin compatibilidad con archivos

Seleccione la opción de base de datos del Asistente para aplicaciones Vista de base de datos sin compatibilidad con archivos si no necesita la serialización de documentos. El documento sirve para los siguientes propósitos útiles:

  • Es un lugar práctico para almacenar un objeto CRecordset.

    Este uso paraleliza los conceptos normales del documento: el documento almacena los datos (o, en este caso, un conjunto de registros) y la vista es una vista del documento.

  • Si la aplicación presenta varias vistas (como varias vistas de registro), un documento admite la coordinación de las vistas.

    Si varias vistas muestran los mismos datos, puede usar la función miembro CDocument::UpdateAllViews para coordinar las actualizaciones de todas las vistas cuando cualquier vista cambie los datos.

Normalmente, esta opción se usa para aplicaciones sencillas basadas en formularios. El Asistente para aplicaciones admite automáticamente una estructura cómoda para estas aplicaciones.

Documento con compatibilidad con archivos

Seleccione la opción de la base de datos del Asistente para aplicaciones Vista de base de datos con compatibilidad con archivos cuando tenga un uso alternativo para los comandos de menú Archivo relacionados con el documento y la serialización de documentos. Para la parte de acceso a datos del programa, puede usar el documento de la misma manera que se describe en Documento sin compatibilidad con archivos. Puede usar la funcionalidad de serialización del documento, por ejemplo, para leer y escribir un documento de perfil de usuario serializado que almacena las preferencias del usuario u otra información útil. Para obtener más ideas, vea Serialización: Serialización frente a entrada y salida de base de datos.

El Asistente para aplicaciones admite esta opción, pero debe escribir el código que serializa el documento. Almacene la información serializada en los miembros de datos del documento.

Aplicaciones sin documento

Es posible que a veces quiera escribir una aplicación que no use documentos ni vistas. Sin documentos, los datos se almacenan (como un objeto CRecordset) en la clase de ventana de marco o en la clase de aplicación. Cualquier requisito adicional depende de si la aplicación presenta una interfaz de usuario.

Compatibilidad de bases de datos con una interfaz de usuario

Si tiene una interfaz de usuario (aparte de, por ejemplo, una interfaz de línea de comandos de consola), la aplicación dibuja directamente en el área cliente de la ventana de marco en lugar de en una vista. Esta aplicación no usa CRecordView, CFormView o CDialog para su interfaz de usuario principal, pero normalmente usa CDialog para diálogos normales.

Escritura de aplicaciones sin documentos

Dado que el asistente para aplicaciones no admite la creación de aplicaciones sin documentos, debe escribir su propia clase derivada de CWinApp y, si es necesario, también crear una clase CFrameWnd o CMDIFrameWnd. Invalide CWinApp::InitInstance y declare un objeto de aplicación como:

CYourNameApp theApp;

El marco sigue suministrando el mecanismo de asignación de mensajes y muchas otras características.

Compatibilidad con bases de datos independiente de la interfaz de usuario

Algunas aplicaciones no necesitan ninguna interfaz de usuario o solo una mínima. Por ejemplo, supongamos que está escribiendo:

  • Un objeto intermedio de acceso a datos al que otras aplicaciones (clientes) llaman para un procesamiento especial de datos entre la aplicación y el origen de datos.

  • Una aplicación que procesa datos sin intervención del usuario, como una aplicación que mueve datos de un formato de base de datos a otro o que realiza cálculos y realiza actualizaciones por lotes.

Dado que ningún documento posee el objeto CRecordset, probablemente quiera almacenarlo como miembro de datos incrustado en la clase de aplicación derivada de CWinApp. De forma alternativa, puede hacer lo siguiente:

  • No mantener un objeto CRecordset permanente en absoluto. Puede pasar NULL a los constructores de clase del conjunto de registros. En ese caso, el marco crea un objeto CDatabase temporal mediante la información de la función miembro GetDefaultConnect del conjunto de registros. Este es el enfoque alternativo más probable.

  • Convertir el objeto CRecordset en una variable global. Esta variable debe ser un puntero a un objeto de conjunto de registros que se crea dinámicamente en la invalidación CWinApp::InitInstance. Esto evita intentar construir el objeto antes de inicializar el marco.

  • Usar objetos de conjunto de registros como lo haría en el contexto de un documento o una vista. Cree conjuntos de registros en las funciones miembro de los objetos de aplicación o ventana de marco.

Consulte también

Clases de bases de datos MFC