Home | Overview | How Do I | FAQ | Sample | Tutorial | ODBC Driver List
Structured Query Language (SQL) is a way to communicate with a relational database that lets you define, query, modify, and control the data. Using SQL syntax, you can construct a statement that extracts records according to criteria you specify.
Note This information applies to the MFC ODBC classes. If you’re working with the MFC DAO classes, see the topic Comparison of Microsoft Jet Database Engine SQL and ANSI SQL in DAO Help.
SQL statements begin with a keyword “verb” such as CREATE or SELECT. SQL is a very powerful language; a single statement can affect an entire table.
Many versions of SQL exist, each developed with a particular DBMS in mind. The MFC database classes recognize a set of SQL statements that corresponds to the X/Open and SQL Access Group Common Applications Environment (CAE) SQL draft specification (1991). For details on the syntax of these statements, see Appendix C in the ODBC SDK Programmer’s Reference on the MSDN Library CD.
This article explains:
The database classes are implemented with ODBC, which uses SQL in a call-level interface rather than embedding SQL commands in the code. ODBC uses SQL to communicate with a data source through ODBC drivers. These drivers interpret the SQL and translate it, if necessary, for use with a particular database format, such as Microsoft Access. For more information about how ODBC uses SQL, see the article ODBC and the ODBC SDK Programmer’s Reference on the MSDN Library CD.
The database classes are designed to let you manipulate and update data in an existing data source. ClassWizard and the database classes construct most of the SQL statements for you.
The database classes use a portion of SQL known as the Data Manipulation Language (DML). These commands let you work with all or part of the data source, add new records, edit records, and delete records. The following table lists the most common SQL keywords and the ways the database classes use them.
SQL keyword | ClassWizard and database classes use it ... |
SELECT | To identify which tables and columns in the data source are to be used. |
WHERE | To apply a filter that narrows the selection. |
ORDER BY | To apply a sort order to the recordset. |
INSERT | To add new records to a recordset. |
DELETE | To delete records from a recordset. |
UPDATE | To modify the fields of a record. |
In addition, the database classes recognize ODBC CALL statements, which you can use to call a predefined query (or stored procedure) on some data sources. The ODBC database driver interprets these statements and substitutes the command appropriate for each DBMS.
Note Not all DBMSs support CALL statements.
If the classes cannot recognize a user-supplied statement in CRecordset::Open, it is interpreted as a table name.
For an explanation of how the framework constructs SQL statements, see the articles Recordset: How Recordsets Select Records (ODBC) and SQL: Customizing Your Recordset’s SQL Statement (ODBC).
SQL databases use data types similar to those used in C and C++. For a discussion of these similarities, see the article SQL: SQL and C++ Data Types (ODBC).
You can find more information about SQL, including a list of supported SQL statements, data types, SQL core grammar, and a reading list of recommended publications about SQL, in the ODBC SDK Programmer's Reference on the MSDN Library CD.
The recordsets you derive from the database classes use ODBC to communicate with a data source, and ODBC retrieves records from the data source by sending SQL statements. This article explains the relationship between the database classes and SQL.
A recordset constructs an SQL statement by building up the pieces of an SQL statement into a CString. The string is constructed as a SELECT statement, which returns a set of records.
When the recordset calls ODBC to send an SQL statement to the data source, the ODBC Driver Manager passes the statement to the ODBC driver, and the driver sends it to the underlying DBMS. The DBMS returns a result set of records, and the ODBC driver returns the records to the application. The database classes let your program access the result set in a type-safe C++ class derived from CRecordset.
The following articles provide more information about how the database classes use SQL:
See Also ODBC