Compartir por


Conjunto de registros: Arquitectura (ODBC)

Este tema es aplicable a las clases ODBC de MFC.

En este tema se describen los miembros de datos que componen la arquitectura de un objeto de conjunto de registros:

Nota:

Este tema se aplica a objetos derivados de CRecordset donde no se haya implementado la obtención masiva de filas. Si se implementa la obtención masiva de filas, la arquitectura es muy similar. Para comprender las diferencias, vea Conjunto de registros: Captura de registros en bloque (ODBC).

Clase de ejemplo

Nota:

El Asistente para consumidores ODBC MFC no está disponible en Visual Studio 2019 ni en versiones posteriores. Aun así, puede crear un consumidor manualmente.

Cuando se usa el Asistente para consumidores ODBC MFC desde el Asistente para agregar clases a fin de declarar una clase de conjunto de registros derivada CRecordset, la clase resultante tiene la estructura general que se muestra en la siguiente clase de ejemplo:

class CCourse : public CRecordset
{
public:
   CCourse(CDatabase* pDatabase = NULL);
   ...
   CString m_strCourseID;
   CString m_strCourseTitle;
   CString m_strIDParam;
};

Al principio de la clase, el asistente escribe un conjunto de miembros de datos de campo. Al crear la clase, debe especificar uno o varios miembros de datos de campo. Si la clase está parametrizada, como la clase de ejemplo (con el miembro de datos m_strIDParam), debe agregar manualmente miembros de datos de parámetros. El asistente no admite la adición de parámetros a una clase.

Miembros de datos de campo

Los miembros más importantes de la clase de conjunto de registros son los miembros de datos de campo. Para cada columna que haya seleccionado en el origen de datos, la clase contiene un miembro de datos del tipo de datos adecuado para esa columna. Por ejemplo, la clase de ejemplo mostrada al principio de este tema tiene dos miembros de datos de campo, ambos de tipo CString, denominados m_strCourseID y m_strCourseTitle.

Cuando el conjunto de registros selecciona una serie de registros, el marco enlaza automáticamente las columnas del registro actual (que es el primer registro después de la llamada a Open) a los miembros de datos de campo del objeto. Es decir, el marco usa el miembro de datos de campo apropiado como búfer en el que se va a almacenar el contenido de una columna de registro.

Cuando el usuario se desplaza a un nuevo registro, el marco usa los miembros de datos de campo para representar el registro actual. El marco actualiza los miembros de datos de campo y reemplaza los valores del registro anterior. Los miembros de datos de campo también se usan para actualizar el registro actual y agregar nuevos registros. Como parte del proceso para actualizar un registro, debe especificar los valores de actualización. Para ello, asigne los valores directamente a los miembros de datos de campo adecuados.

Miembros de datos de parámetros

Si la clase está parametrizada, tiene uno o varios miembros de datos de parámetros. Una clase parametrizada permite basar una consulta del conjunto de registros en la información que se ha obtenido o calculado en tiempo de ejecución.

Normalmente, el parámetro ayuda a restringir la selección, como en el ejemplo siguiente. En función de la clase de ejemplo indicada al principio de este tema, el objeto de conjunto de registros puede ejecutar la siguiente instrucción SQL:

SELECT CourseID, CourseTitle FROM Course WHERE CourseID = ?

El símbolo "?" es un marcador de posición para un valor de parámetro que se proporciona en tiempo de ejecución. Cuando construya el conjunto de registros y establezca su miembro de datos m_strIDParam en MATH101, la instrucción SQL efectiva para el conjunto de registros se convertirá en lo siguiente:

SELECT CourseID, CourseTitle FROM Course WHERE CourseID = MATH101

Al definir miembros de datos de parámetros, le está indicando al marco los parámetros que contiene la cadena SQL. El marco enlaza el parámetro, lo que permite que ODBC sepa dónde debe obtener los valores para sustituir el marcador de posición. En el ejemplo, el conjunto de registros resultante solo contiene el registro de la tabla Course con una columna CourseID, cuyo valor es MATH101. Todas las columnas especificadas de este registro están seleccionadas. Puede especificar tantos parámetros (y marcadores de posición) como necesite.

Nota:

MFC no hace nada específico con los parámetros (en concreto, no realiza una sustitución de texto), pero le indica a ODBC dónde obtener el parámetro, de modo que ODBC pueda recuperar los datos y realizar la parametrización necesaria.

Nota:

El orden de los parámetros es importante. Para obtener información sobre esta cuestión y profundizar en los parámetros, vea Conjunto de registros: Parametrizar un conjunto de registros (ODBC).

Uso de m_nFields y m_nParams

Cuando un asistente escribe un constructor para la clase, también inicializa el miembro de datos m_nFields, que especifica el número de miembros de datos de campo de la clase. Si agrega algún parámetro a la clase, debe agregar también una inicialización para el miembro de datos m_nParams, que especifica el número de miembros de datos de parámetros. El marco usa estos valores para trabajar con los miembros de datos.

Para obtener más información y ejemplos, vea Intercambio de campos de registro: Usar RFX.

Consulte también

Conjunto de registros (ODBC)
Conjunto de registros: Declarar una clase para una tabla (ODBC)
Intercambio de campos de registros (RFX)