TN055: Міграції MFC ODBC застосунків баз даних класу MFC DAO класи

Огляд

У багатьох ситуаціях може бути бажаним для перенесення програм, які використовуються ODBC MFC в базу даних класи класи бази даних DAO MFC. Ця технічна Примітка буде докладно більшість відмінностей між MFC ODBC і ДАО класи. З відмінності на увазі вона не повинна бути занадто важким для перенесення програм з ODBC класи класи MFC за бажанням.

Чому перенесення з ODBC DAO?

Є кілька причин, чому ви можете для перенесення програм з класів бази даних ODBC класи бази даних DAO, але рішення не обов'язково простий або очевидні. Одна справа мати на увазі, є Microsoft Jet database engine, який використовується DAO можна прочитати будь-якого джерела даних ODBC, для яких у вас є драйвер ODBC. Це може бути більш ефективного використання класів бази даних ODBC або зателефонуйте ODBC безпосередньо себе, але Microsoft Jet database engine читати даних ODBC.

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

Більш складних випадках виникають, коли дані існує на сервері або на цілий ряд різних серверах. У цьому випадку, рішення про використання бази даних ODBC класів або бази даних DAO класів є важким. Якщо ви хочете, щоб робити речі, як об'єднання різнорідних (об'єднання даних з серверів в декількох форматах, як SQL Server і Oracle), то обробник баз даних Microsoft Jet буде виконувати об'єднання для вас, а не змушує вас зробити роботу необхідно, якщо ви користувалися класи бази даних ODBC або безпосередньо під назвою ODBC. Якщо використовується драйвер ODBC, які підтримує драйвер курсори, ваш кращий вибір, можливо, класи бази даних ODBC.

Вибір може бути складно, так що ви можете написати деякі приклади коду, перевірити ефективність різних методів з огляду на ваші особливі потреби. Цей технічне Примітка припускає, що ви прийняли рішення для перенесення з бази даних ODBC класи класи бази даних DAO.

Схожість між класи бази даних ODBC і класи бази даних MFC DAO

Оригінальний дизайн класи MFC ODBC була заснована на DAO об'єктну модель, яка використовується в Microsoft Access і Microsoft Visual Basic. Це означає, що існує багато спільних можливостей ODBC і ДАО MFC класи, які будуть не всі перераховані в цьому розділі. Загалом, програмування моделей однакові.

Щоб виділити кілька подібності:

Наприклад, в обох моделей процедура для отримання даних для створення та відкриття об'єкта бази даних, створення відкриття набору записів об'єкта та навігації (перехід) хоча дані, виконує деякі операції.

Відмінності між ODBC і ДАО MFC класи

ДАО класи включити більше об'єктів і багатше набір методів, але цей розділ буде тільки докладно відмінності в такі класи і функціональність.

Мабуть, найбільш очевидних відмінностей між класами, аналогічні класи та глобальні функції, зміна імені. Нижченаведений список показує ім'я зміни 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. Клас ODBC CRecordset має можливість створити тип набору записів вперед лише для читання. У CDaoRecordset клас тільки для вперед є не тип набору записів, але досить нерухомості (або параметр) певних типів набори записів.

  4. Тільки для додавання записів під час відкриття об'єкта CRecordset означало, що даних у наборі записів може читати і додається. CDaoRecordset об'єкт, тільки для додавання параметра буквально означає що дані в наборі записів може бути лише включені (і не читати).

  5. ODBC класи транзакції функцій-членів є членами CDatabase і діяти на рівні бази даних. ДАО класах транзакції член функції члени вищого рівня класу (CDaoWorkspace) і таким чином можуть вплинути на декілька об'єктів CDaoDatabase обмін же робочої області (транзакції пробіл).

  6. Винятком класу було змінено. CDBExceptions кинули в ODBC класи та CDaoExceptions класу DAO.

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

Примітка   Знімки ДАО (CDaoRecordset), тільки для читання, а знімки ODBC (CRecordset) може бути оновлювану залежно від того, драйвер і використовувати бібліотеку курсора ODBC. Якщо ви використовуєте бібліотеку курсора, CRecordset знімків, оновлювану. Без бібліотеку курсора ODBC у разі використання Microsoft драйверів від робочого драйвера оновлення 3.0, CRecordset знімків призначені лише для читання. Якщо використовується інший драйвер, перевірте документації водія, щоб побачити, якщо знімки (STATIC_CURSORS), доступні лише для читання.

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

Index