Help and Support
 

powered byLive Search

How to use MFC DAO classes to create database objects in Visual C++

Article ID:141717
Last Review:June 1, 2005
Revision:5.0
This article was previously published under Q141717
On This Page

SUMMARY

The DAOTable sample (Daotbl.exe) demonstrates how to use the MFC DAO classes to create the following common database objects: databases, tables, queries, fields, and indexes. This dialog-based application maps the properties of these objects to controls the user can set or view. The program source code is organized so that most database interaction is isolated from the user interface code to ease finding examples of how to use MFC DAO.

In addition to demonstrating the use of the MFC DAO classes, this sample can be a useful tool for creating simple Microsoft Access databases. You can create .mdb files from scratch, create and delete tables and queries, add and delete fields and indexes in the tables, and modify existing queries.

The following files contain the code that performs the database operations. Additional files in the project provide the user interface and high level database manipulation.
   QUERYDEF.CPP, .H -- functions to create and use queries
   TABLEDEF.CPP, .H -- functions to create and use tables
   FIELD.CPP, .H    -- functions to create and use fields
   INDEX.CPP, .H    -- functions to create and use indexes
   DATABASE.CPP, .H -- functions to create and use databases
				
To use this code and the MFC DAO classes, you must have Visual C++ 4.0 or later.

NOTE: Beginning with Visual C++ 4.1, the DAOTable sample is included with the Visual C++ CD.

Back to the top

Special Note for Visual C++ 4.1 Users

The DAOTABLE sample that shipped with Visual C++ 4.1 contains a bug that will prevent you from creating fields that are of any type other than text. To correct this problem, you can download the fixed sample as directed below or make the following correction to the ADDTBDLG.CPP file:

Replace this line
   m_FI.m_bAllowZeroLength = TRUE;
				
with this line:
   m_FI.m_bAllowZeroLength = FALSE;
				
This change will disable a workaround that was necessary to avoid a bug in Visual C++ 4.0. In the download files (DAOTBL.EXE), the workaround code is conditionally compiled depending on which version you are using to build the sample. If you do not make the correction given in this section and you run the application using the Visual C++ 4.1 DLLs, the following exception will be thrown when you try to create nontext fields:
Couldn't create field--Exception: Invalid Operation.

Back to the top

MORE INFORMATION

The following files are available for download from the Microsoft Download Center:


Daotbl.exe (http://download.microsoft.com/download/vc50pro/sample/1/nt4/en-us/daotbl.exe)

For more information about how to download Microsoft Support files, click the following article number to view the article in the Microsoft Knowledge Base:
119591 (http://support.microsoft.com/kb/119591/) How to obtain Microsoft support files from online services
Microsoft scanned this file for viruses. Microsoft used the most current virus-detection software that was available on the date that the file was posted. The file is stored on security-enhanced servers that help prevent any unauthorized changes to the file.

NOTE: The file must be decompressed by typing "DAOTBL.EXE -d" to re-create the directory structure.

The MFC DAO classes provide a way to directly use the Microsoft Jet Database Engine. Although Visual C++ wizards automatically generate code that will create and open recordsets for you based on implicitly created database and workspace objects, the code they provide does not demonstrate creating and manipulating MFC DAO objects directly. With MFC DAO classes, you can create the majority of DAO objects and set their properties.

This sample demonstrates using the MFC DAO classes to create and use the following DAO objects: databases, tables, queries, fields, and indexes. Exception handling with both MFC exception macros and the C++ exception mechanism is also shown. Further, DAO exceptions are put to use in detecting the existence of objects in the DAO collections.

Listed below are all the files in the project (except those that are common to all Visual C++ projects). Each file is shown with the type of components it contains and a brief description.
   ADDQYDLG.CPP         - USER INTERFACE - query definition dialog
   ADDQYDLG.H
   DAOTABLE.CPP         - APPLICATION - main application objects
   DAOTABLE.H
   DAOTDLG.CPP          - USER INTERFACE - main dialog
   DAOTDLG.H
   DATABASE.CPP         - MFC DAO - database specific functions
   DATABASE.H
   ADDIXDLG.CPP         - USER INTERFACE - add indexes dialog
   ADDIXDLG.H
   ADDTBDLG.CPP         - USER INTERFACE - table definition dialog
   ADDTBDLG.H
   FIELD.CPP            - MFC DAO - field specific functions
   FIELD.H
   LISTCTRL.CPP         - USER INTERFACE - derived CListCtrl class
   LISTCTRL.H
   INDEX.CPP            - MFC DAO - index specific functions
   INDEX.H
   QUERYDEF.CPP         - MFC DAO - querydef specific functions
   QUERYDEF.H
   TABLEDEF.CPP         - MFC DAO - tabledef specific functions
   TABLEDEF.H
   ADDDBDLG.CPP         - USER INTERFACE - database definition dialog
   ADDDBDLG.H
				

Back to the top

REFERENCES

For more information about the MFC DAO classes, please see the Visual C++ Help file.

Back to the top


APPLIES TO
Microsoft Foundation Class Library 4.2, when used with:
  Microsoft Visual C++ 4.0 Standard Edition
  Microsoft Visual C++ 4.1 Subscription
  Microsoft Visual C++ 4.2 Enterprise Edition
  Microsoft Visual C++ 4.2 Professional Edition
  Microsoft Visual C++ 4.2 Enterprise Edition
  Microsoft Visual C++ 4.2 Professional Edition
  Microsoft Visual C++ 5.0 Enterprise Edition
  Microsoft Visual C++ 5.0 Professional Edition
  Microsoft Visual C++ 6.0 Enterprise Edition
  Microsoft Visual C++ 6.0 Professional Edition
  Microsoft Visual C++, 32-bit Learning Edition 6.0

Back to the top

Keywords: 
kbdownload kbdatabase kbfile kbsample kbcode kbusage KB141717

Back to the top

Article Translations

 

Other Support Options

  • Need More Help?
    Contact a Support professional by Email, Online or Phone.
  • Customer Service
    For non-technical assistance with product purchases, subscriptions, online services, events, training courses, corporate sales, piracy issues, and more.
  • Newsgroups
    Pose a question to other users. Discussion groups and Forums about specific Microsoft products, technologies, and services.