This topic explains:
When to use direct SQL calls.
This information applies to the MFC ODBC classes. If you are working with the MFC DAO classes, see the topic "Comparison of Microsoft Jet Database Engine SQL and ANSI SQL" in DAO Help.
When to Call SQL Directly
To create new tables, drop (delete) tables, alter existing tables, create indexes, and perform other SQL functions that change the data source schema, you must issue a SQL statement directly to the data source using Database Definition Language (DDL). When you use a wizard to create a recordset for a table (at design time), you can choose which columns of the table to represent in the recordset. This does not allow for columns you or another user of the data source add to the table later, after your program has been compiled. The database classes do not support DDL directly, but you can still write code to bind a new column to your recordset dynamically, at run time. For information about how to do this binding, see Recordset: Dynamically Binding Data Columns (ODBC).
You can use the DBMS itself to alter the schema or another tool that lets you perform DDL functions. You can also use ODBC function calls for sending SQL statements, such as calling a predefined query (stored procedure) that does not return records.
Making Direct SQL Function Calls
You can directly execute a SQL call using a object. Set up your SQL statement string (usually in a CString) and pass it to the member function of your CDatabase object. If you use ODBC function calls to send a SQL statement that normally returns records, the records are ignored.