TN055: Перенос приложений класса базы данных MFC ODBC для классов MFC DAO

Обзор

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

Почему мигрировать из ODBC в DAO?

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

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

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

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

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

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

Чтобы выделить несколько сходства:

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

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

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

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

Класс или функция Эквивалент в классы 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.

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

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

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

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

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

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

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

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

  6. Класс exception был изменен. CDBExceptions брошены в классах ODBC и CDaoExceptions в классы DAO.

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

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

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

Index