Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SSW_8_11.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
5.22 Mб
Скачать

12.5 Odbc versus dao

In the previous section, you got an introduction to Visual C++'s ODBC classes and how they're used in an AppWizard-generated application. Visual C++ also features a complete set of DAO classes that you can use to create database applications. DAO is, in many ways, almost a superset of the ODBC classes, containing most of the functionality of the ODBC classes and adding a great deal of its own. Unfortunately, although DAO can read ODBC data sources for which ODBC drivers are available, it's not particularly efficient at the task. For this reason, the DAO classes are best suited for programming applications that manipulate Microsoft's .mdb database files, which are created by Microsoft Access. Other file formats that DAO can read directly are those created by FoxPro and Excel.

The DAO classes, which use the Microsoft Jet Database Engine, are so much like the ODBC classes, you can often convert an ODBC program to DAO simply by changing the class names in the program: CDatabase becomes CDaoDatabase, CRecordset becomes CDaoRecordset, and CRecordView becomes CDaoRecordView. One big difference between ODBC and DAO, however, is the way in which the system implements the libraries. ODBC is implemented as a set of DLLs, whereas DAO is implemented as OLE objects. Using OLE objects makes DAO a bit more up to date at least as far as architecture goes than ODBC.

Although DAO is implemented as OLE objects, you don't have to worry about dealing with those objects directly. The MFC DAO classes handle all of the details for you, providing data and function members that interact with the OLE objects. The CDaoWorkspace class provides more direct access to the DAO database engine object through static member functions. Although MFC handles the workspace for you, you can access its member functions and data members to explicitly initialize the database connection.

Another difference is that the DAO classes feature a more powerful set of methods that you can use to manipulate a database. These more powerful member functions enable you to perform sophisticated database manipulations without having to write a lot of complicated C++ code or SQL statements.

In summary, ODBC and DAO similarities are listed here:

  • ODBC and DAO can both manipulate ODBC data sources. However, DAO is less efficient at this task, because it is best used with .mdb database files.

  • AppWizard can create a basic database application based on either the ODBC or DAO classes. Which type of application you want to create depends at least in some part on the type of databases with which you are working.

  • ODBC and DAO both use objects of an MFC database class to provide a connection to the database being accessed. In ODBC, this database class is called CDatabase, whereas in DAO, the class is called CDaoDatabase. Although these classes have different names, the DAO database class contains some similar members to those found in the ODBC class.

  • ODBC and DAO both use objects of a record set class to hold the currently selected records from the database. In ODBC, this record set class is called CRecordset, whereas in DAO, the class is called CDaoRecordset. Although these classes have different names, the DAO record set class contains, not only almost the same members as the ODBC class, but also a large set of additional member functions.

  • ODBC and DAO use similar procedures for viewing the contents of a data source. That is, in both cases, the application must create a database object, create a record set object, and then call member functions of the appropriate classes to manipulate the database.

Some differences between ODBC and DAO are listed here:

  • Although both ODBC and DAO MFC classes are similar (very similar, in some cases), some similar methods have different names. In addition, the DAO classes feature many member functions not included in the ODBC classes.

  • ODBC uses macros and enumerations to define options that can be used when opening record sets. DAO, on the other hand, defines constants for this purpose.

  • Under ODBC, snapshot record sets are the default, whereas under DAO, dynamic record sets are the default.

  • The many available ODBC drivers make ODBC useful for many different database file formats, whereas DAO is best suited to applications that need to access only .mdb files.

  • ODBC is implemented as a set of DLLs, whereas DAO is implemented as OLE objects.

  • Under ODBC, an object of the CDatabase class transacts directly with the data source. Under DAO, a CDaoWorkspace object sits between the CDaoRecordset and CDaoDatabase objects, thus enabling the workspace to transact with multiple database objects.

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]