Поделиться через


Набор записей. Архитектура (ODBC)

Этот раздел относится к классам ODBC библиотеки MFC.

В этом разделе описаны элементы данных, составляющие архитектуру объекта набора записей.

Примечание.

Этот раздел относится к объектам, производным от CRecordset, в которых пакетное получение строк не реализовано. Если пакетное получение строк реализовано, архитектура будет схожей. Сведения о различиях см. в разделе Recordseting Recordseting Records in Bulk (ODBC).

Пример класса

Примечание.

Мастер потребителя MFC ODBC недоступен в Visual Studio 2019 и более поздних версиях. При этом вы по-прежнему можете создать потребитель вручную.

При использовании мастера объекта-получателя ODBC MFC в мастере Добавления класса, чтобы объявить класс набора записей на основе CRecordset, результирующий класс имеет общую структуру, показанную в следующем простом классе:

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

В начале класса мастер записывает набор элементов данных полей. При создании класса необходимо указать один или несколько элементов данных полей. Если класс является параметризованным, как класс в примере (с элементом данных m_strIDParam), необходимо вручную добавить элементы данных параметров. Мастер не поддерживает добавление параметров в класс.

Элементы данных поля

Наиболее важные элементы класса в классе набора записей — это элементы данных полей. Для каждого столбца, выбранного из источника данных, этот класс содержит элемент данных соответствующего типа данных для этого столбца. Например, пример класса, показанный в начале этого раздела, содержит два элемента данных полей типа CString, которые называются m_strCourseID и m_strCourseTitle.

Когда набор записей выбирает набор записей, платформа автоматически связывает столбцы текущей записи (после вызова Open, первая запись является текущей) с элементами данных полей объекта. То есть платформа использует соответствующий элемент данных поля как буфер, в котором будет храниться содержимое столбца записи.

При переходе пользователя к новой записи платформа использует элементы данных полей для представления текущей записи. Платформа обновляет элементы данных полей, заменяя значения предыдущей записи. Элементы данных полей также используются для обновления текущей записи и добавления новых записей. В рамках процесса обновления записи вы указываете новые значения путем присвоения значений непосредственно соответствующим элементам данных полей.

Элементы данных параметров

Если класс является параметризованным, он имеет один или несколько элементов данных параметров. Параметризованный класс позволяет делать запрос к набору записей на основе данных, полученных или рассчитанных во время выполнения.

Как правило, параметр помогает сузить выбор, как показано в следующем примере. На основе примера класса в начале этого раздела объект набора записей может выполнить следующую инструкцию SQL:

SELECT CourseID, CourseTitle FROM Course WHERE CourseID = ?

"?" — заменяет значение параметра, которое вы предоставляете во время выполнения. Когда вы создаете набор записей и задаете для его элемента данных m_strIDParam значение MATH101, эффективной инструкцией SQL для набора записей становится:

SELECT CourseID, CourseTitle FROM Course WHERE CourseID = MATH101

Определив элементы данных параметра, вы сообщаете платформе о параметрах в строке SQL. Платформа привязывает параметр, который указывает ODBC, где можно получить значения для замены заполнителя. В примере результирующий набор записей содержит только записи из таблицы Course со столбцом CourseID, значение которого равно MATH101. Выбраны все указанные столбцы этой записи. Можно указать любое необходимое число параметров (и заполнителей).

Примечание.

Библиотека MFC сама ничего не делает с параметрами — в частности, она не выполняет подстановки текста. Вместо этого MFC сообщает ODBC, где получить параметр, а ODBC извлекает данные и выполняет необходимую параметризацию.

Примечание.

Порядок параметров важен. Дополнительные сведения о параметрах см. в разделе Recordset: параметризация набора записей (ODBC).

Использование m_nFields и m_nParams

Когда мастер создает конструктор для класса, он также инициализирует элемент данных m_nFields, который указывает количество элементов данных полей в классе. Если вы добавляете параметры в класс, необходимо также добавить инициализацию для элемента данных m_nParams, который указывает число элементов данных параметров. Платформа использует эти значения для работы с элементами данных.

Дополнительные сведения и примеры см. в разделе "Обмен полями записей" с помощью RFX.

См. также

Набор записей (ODBC)
Набор записей. Объявление класса таблицы (ODBC)
Обмен данными полей записей (RFX)