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


Набор записей. Порядок выборки записей в наборе (ODBC)

Обновлен: Ноябрь 2007

В этом разделе приведены сведения, относящиеся к классам ODBC библиотеки MFC.

В данном разделе рассматриваются следующие вопросы:

  • Роль и возможности разработчика при выборке записей.

  • Порядок создания инструкций SQL для выборки записей в наборе.

  • Настройка выборки.

В наборе записей выборка записей из источника данных осуществляется посредством передачи инструкций SQL драйверу ODBC. Используемые инструкции SQL зависят от порядка разработки и открытия класса набора записей.

Возможности разработчика при выборке записей

В следующей таблице показаны возможности разработчика при выборке записей.

Возможности по работе с набором записей

Ситуация

Возможные действия

Объявление класса набора записей с помощью мастера добавления классов

Определение таблицы, из которой осуществляется выборка.

Определение включаемых столбцов.

См. раздел Добавление объекта-получателя ODBC MFC.

Завершение реализации класса набора записей

Настройка относящихся к приложению и используемых по умолчанию параметров функций-членов, таких как OnSetOptions (дополнительно), посредством переопределения таких функций. Определение членов данных параметров для создания параметризованного набора записей.

Создание объекта набора записей (перед вызовом метода Open)

Определение условий поиска (в том числе составных), которые используются для фильтрации записей с помощью предложения WHERE. См. раздел Набор записей. Фильтрация записей (ODBC).

Определение порядка сортировки записей с помощью предложения ORDER BY. См. раздел Набор записей. Сортировка записей (ODBC).

Определение значений параметров, добавляемых в класс. См. раздел Набор записей. Параметризация набора записей (ODBC).

Выполнение запроса набора записей посредством вызова метода Open

Определение пользовательской строки SQL, которая замещает строку SQL, установленную по умолчанию с помощью мастера. См. описание функции CRecordset::Open в справочнике по библиотеке классов, а также раздел SQL. Настройка инструкций SQL набора записей (ODBC).

Вызов метода Requery для запроса последних значений из источника данных

Определение новых параметров, а также условий фильтрации и сортировки. См. раздел Набор записей. Запрос набора записей (ODBC).

Порядок создания инструкций SQL в наборе записей

При вызове функции-члена Open объекта набора записей с ее помощью автоматически создается инструкция SQL на базе одного или всех из указанных ниже компонентов:

  • Параметр lpszSQL, передаваемый в функцию-член Open. При отличном от NULL значении этот параметр определяет часть пользовательской строки SQL или строку целиком. Эта строка анализируется в среде .NET Framework. Если строка представляет собой инструкцию SELECT SQL или инструкцию CALL ODBC, она используется в качестве инструкции SQL набора записей. Если строка не начинается с фразы "SELECT" или "{CALL", она используется для построения предложения FROM SQL.

  • Строка, возвращаемая с помощью функции GetDefaultSQL. По умолчанию возвращается имя таблицы набора записей, определенной с помощью мастера. При необходимости можно определить другое значение, возвращаемое функцией. Если строка не начинается с фразы "SELECT" или "{CALL", автоматически вызывается функция GetDefaultSQL, поскольку в этом случае предполагается, что строка содержит имя таблицы и может использоваться для создания строки SQL.

  • Члены данных полей в наборе записей, которые связываются с конкретными столбцами таблицы. Столбцы записей автоматически связываются с адресами этих членов, используя их в качестве буфера. Чтобы определить связь членов данных полей со столбцами таблицы, в .NET Framework применяется вызов функции RFX или Bulk RFX в функциях-членах DoFieldExchange или DoBulkFieldExchange набора записей.

  • Фильтр набора записей (если используется), содержащийся в члене данных m_strFilter. Эта строка используется в .NET Framework для построения предложения WHERE SQL.

  • Порядок сортировки набора записей (если используется), определенный в члене данных m_strSort. Эта строка используется в .NET Framework для построения предложения ORDER BY SQL.

    zz540f09.alert_note(ru-ru,VS.90).gifСовет.

    Чтобы использовать предложение GROUP BY (и, по возможности, предложение HAVING) SQL, добавьте предложения в конец строки фильтра.

  • Определенные для класса значения членов данных параметров. Значения параметров задаются до вызова метода Open или Requery. В .NET Framework значения параметров привязываются к местозаполнителям "?" в строке SQL. Во время компиляции задается строка с местозаполнителями. Во время выполнения отсутствующие сведения автоматически заполняются на основании передаваемых значений.

На основании указанных выше компонентов с помощью метода Open создается инструкция SELECT SQL. Дополнительные сведения об использовании этих компонентов в .NET Framework см. в разделе Настройка выборки.

После построения инструкции SQL метод Open передает ее в диспетчер драйвера ODBC и библиотеку курсоров ODBC (если она загружена в память), откуда она передается в драйвер ODBC для конкретной СУБД. Драйвер подключается с СУБД для выборки записей из источника данных и извлекает первую запись. Извлеченная запись загружается в члены данных полей в наборе записей.

Сочетание этих способов можно использовать для открытия таблиц и построения запросов, основанных на объединении нескольких таблиц. После дополнительной настройки можно вызывать готовые запросы (хранимые процедуры), выбирать неизвестные во время разработки столбцы таблицы и привязывать их к полям набора записей, а также выполнять множество других задач доступа к данным. Задачи, которые не могут быть выполнены с помощью настраиваемых наборов записей, можно выполнить посредством вызова функций интерфейса API ODBC или непосредственного выполнения инструкций SQL с помощью функции CDatabase::ExecuteSQL.

Настройка выборки

Помимо определения фильтра, порядка сортировки или параметров, можно выполнить следующие действия по настройке выборки набора записей:

  • Передача пользовательской строки SQL в функцию lpszSQL при вызове метода Open для набора записей. Любые передаваемые в функцию lpsqSQL значения обладают приоритетом по отношению к возвращаемым значениям функции GetDefaultSQL.

    Дополнительные сведения см. в разделе SQL. Настройка инструкций SQL набора записей (ODBC). В этом разделе описываются типы инструкций SQL (или частичных инструкций), которые можно передавать в метод Open, а также выполняемые с ними операции .NET Framework.

    zz540f09.alert_note(ru-ru,VS.90).gifПримечание.

    Если передаваемая пользовательская строка не начинается с фразы "SELECT" или "{CALL", в MFC предполагается, что она содержит имя таблицы. Это примечание также относится к следующему элементу маркированного списка.

  • Изменение строки, которая записывается в функцию-член GetDefaultSQL набора записей с помощью мастера. Измените возвращаемое значение в коде функции. По умолчанию с помощью мастера записывается функция GetDefaultSQL, возвращающая имя одиночной таблицы.

    С помощью функции GetDefaultSQL можно возвращать любые элементы, передаваемые в параметре lpszSQL метода Open. Если в параметре lpszSQL не передается пользовательская строка, используется строка, возвращаемая функцией GetDefaultSQL. Функция GetDefaultSQL должна возвращать как минимум имя одиночной таблицы. Также в этой функции можно возвращать имена нескольких таблиц, полную инструкцию SELECT, инструкцию CALL ODBC и другие элементы. Перечень элементов, которые могут передаваться в параметре lpszSQL или возвращаться в функции GetDefaultSQL, см. в разделе SQL. Настройка инструкций SQL набора записей (ODBC).

    Если выполняется объединение нескольких таблиц, измените функцию GetDefaultSQL, чтобы настроить список таблиц, используемых в предложении FROM SQL. Дополнительные сведения см. в разделе Набор записей. Объединение (ODBC).

  • Привязка дополнительных членов данных полей вручную, в том числе на основании сведений о схеме источника данных, полученных во время выполнения. Члены полей данных добавляются в класс набора записей. Вызовы функций RFX и Bulk RFX, в которых используются эти члены добавляются в функции-члены DoFieldExchange или DoBulkFieldExchange. Инициализация членов данных определяется в конструкторе класса. Дополнительные сведения см. в разделе Набор записей. Динамическая привязка столбцов данных (ODBC).

  • Настройка относящихся к приложению и используемых по умолчанию параметров функций-членов, таких как OnSetOptions, посредством переопределения таких функций.

Чтобы определить в качестве базы набора записей составную инструкцию SQL, следует использовать сочетание описанных выше способов настройки. Например, таким образом можно объединять несколько таблиц или использовать предложения и ключевые слова SQL, которые не поддерживаются напрямую в наборах записей.

См. также

Основные понятия

Набор записей (ODBC)

Набор записей. Порядок обновления записей в наборе (ODBC)

Основы ODBC

SQL

Набор записей: блокировка (ODBC)