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


TN055. Перенос приложений, использующих классы базы данных MFC ODBC, на классы MFC DAO

Примечание

Что касается Visual C++ .NET, то среда и мастера Visual C++ больше не поддерживают DAO (хотя классы DAO включены и вы по-прежнему можете их использовать).Майкрософт рекомендует использовать Шаблоны OLE DB или ODBC и MFC для новых проектов.DAO необходимо использовать только для поддержки существующих приложений.

Обзор

Во многих случаях может быть желательно миграции приложений, которые используют классы базы данных ODBC MFC базы данных к классам DAO библиотеки MFC. Это техническом примечании детализирует большинство различий между классами MFC DAO и ODBC. С учетом различиями в, не должно быть слишком сложно миграцией приложений из классов ODBC к классам MFC при необходимости.

Почему Миграция из ODBC в DAO

Существует несколько причин, по которым может понадобиться перенести приложения от классов баз данных ODBC в классы базы данных DAO, но решение не просто или не очевидно. Одно действие, которое необходимо помнить, что ядра СУБД Microsoft Jet, используемое DAO может считывать все источники данных ODBC, для которого установлен драйвер ODBC. Оно может быть эффективнее использовать классы базы данных ODBC или вызова ODBC самостоятельно напрямую, но ядра СУБД Microsoft Jet может считывать данные ODBC.

Несколько простых значениях, которые упрощают решение ODBC/DAO. Формат, например, если только необходим доступ к данным в формате Microsoft Jet, обработчик может считывать непосредственно (формат доступа, Excel и т д) явного вариант использования классов DAO базы данных.

Более сложные случаи возникают, когда в данных существует на сервере или на множестве разных серверах. В этом случае решение для использования классов баз данных ODBC и классов DAO базы данных трудное одно. Если требуется действия несродное таких задач, как соединение (данные соединения из серверов в нескольких форматах, как SQL Server и Oracle), ядра СУБД Microsoft Jet выполняется соединение автоматически, а не реализации, необходимый для работы при использовании классов баз данных ODBC или вызов ODBC напрямую. При использовании драйвера ODBC, который поддерживает курсоры драйвера, что является лучшим вариантом может быть классами баз данных ODBC.

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

Сходства между классами классов баз данных ODBC и баз данных MFC DAO

Исходная структура классов ODBC библиотеки MFC DAO создавалась в объектной модели, которая используется в Microsoft Access и Microsoft Visual Basic. Это означает, что многие общие черты классов MFC DAO и ODBC, все не будут перечислены в этом разделе. Как правило, модели программирования одинаково.

Выбор нескольких общего:

  • Классы DAO и ODBC и имеют объекты базы данных, которые определяют использование базовой системы управления базами данных (СУБД).

  • Оба имеют объекты наборов записей, представляющая набор результатов, возвращаемых из этого СУБД.

  • Базы данных и объекты наборов записей DAO имеют члены почти одинаковые в классы ODBC.

  • С обоими наборами классов, код для извлечения данных идентичны, за исключением некоторых об изменениях объекта и именем члена. Изменения, но обычно процесс простую замена имени переключения от классов ODBC к классам DAO.

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

Различия между классами MFC DAO и ODBC

Классы DAO включают несколько объектов и более богатого набора методов, однако этот раздел только детализирует подобные различия в классах и функции.

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

Класс или функция

Эквивалент в классах MFC DAO

CDatabase

CDaoDatabase

CDatabase::ExecuteSQL

CDaoDatabase::Execute

CRecordset

CDaoRecordset

CRecordset::GetDefaultConnect

CDaoRecordset::GetDefaultDBName

CFieldExchange

CDaoFieldExchange

RFX_Bool

DFX_Bool

RFX_Byte

DFX_Byte

RFX_Int

DFX_Short

RFX_Long

DFX_Long

 

DFX_Currency

RFX_Single

DFX_Single

RFX_Double

DFX_Double

RFX_Date *

DFX_Date (COleDateTime основан на)

RFX_Text

DFX_Text

RFX_Binary

DFX_Binary

RFX_LongBinary

DFX_LongBinary

* Функция  RFX_Date основан на CTime и TIMESTAMP_STRUCT.

Значительные изменения функции, которая может повлиять на приложения и требуется более простые изменения имен перечислены ниже.

  • Константы и макросы, используемые для определения действий как набор записей открыть тип и параметры набора записей открытые были изменены.

    Классы ODBC необходимо было указывать эти параметры с помощью макросов или типы перечислений.

    Классы DAO, DAO предоставляет определение этих параметров в файле заголовка (DBDAOINT.H). Таким образом тип набора записей, указанный член CRecordset, но DAO константа вместо. Например, как снимок определяет тип CRecordset в ODBC, но DB_OPEN_SNAPSHOT определяет тип CDaoRecordset.

  • Тип набора записей по умолчанию для CRecordsetснимок при тип набора записей по умолчанию для CDaoRecordsetdynaset (см. замечание ниже дополнительные вопросы о моментальных снимках класса ODBC).

  • Класс ODBC CRecordset имеет возможность создавать только вперед для типа набора записей. В классе CDaoRecordset, только вперед, не тип набора записей, а свойство (или параметр) некоторых типов наборов записей.

  • Только для добавления набора записей при открытии объекта CRecordset значил, что данные набора записей могут считываться и добавления. С объектом CDaoRecordset, только для добавления параметра означает буквально, что данные набора записей можно добавлять только (а не чтения).

  • Функции-члены транзакции классов ODBC члены CDatabase и действуют на уровне базы данных. В классах DAO, функции-члены транзакции члены класса уровня (CDaoWorkspace) и, таким образом, могут влиять на несколько объектов CDaoDatabase совместно используют одну и ту же рабочую область транзакции (пробел).

  • Класс исключений был изменен. CDBExceptions вызывается в классы и ODBC CDaoExceptions в классах DAO.

  • RFX_Date использует CTime и объекты TIMESTAMP_STRUCT, DFX_Date используется COleDateTime. COleDateTime практически так же, CTime, но основан на 8 байте OLE date вместо 4 байт time_t, поэтому она может содержать намного больше диапазона данных.

    Примечание

    Снимки DAO (CDaoRecordset) только для чтения, моментальные снимки ODBC (CRecordset) могут быть доступны для обновления в зависимости от драйвера и использовать библиотеку курсоров ODBC.При использовании библиотеки курсоров, моментальные снимки CRecordset обновляемый.При использовании драйвера Microsoft какие-либо из пакета 3.0 драйвера рабочего стола без библиотеки курсоров ODBC, моментальные снимки CRecordset только для чтения.Если используется другой драйвер, просмотрите документацию драйвера, является ли снимки (STATIC_CURSORS), только для чтения.

См. также

Другие ресурсы

Технические примечания по номеру

Технические примечания по категории