After an ODBC application initializes a connection handle and connects with a data source, it allocates one or more statement handles on the connection handle. The application can then execute Microsoft SQL Server statements on the statement handle. The general sequence of events in executing an SQL statement is:
Set any required statement attributes.
Construct the statement.
Execute the statement.
Retrieve any result sets.
After an application retrieves all the rows in all of the result sets returned by the SQL statement, it can execute another query on the same statement handle. If an application determines that it is not required to retrieve all the rows in a particular result set, it can cancel the rest of the result set by calling either SQLMoreResults or SQLCloseCursor.
If, in an ODBC application, you must execute the same SQL statement multiple times with different data, use a parameter marker denoted by a question mark (?) in the construction of an SQL statement:
INSERT INTO MyTable VALUES (?, ?, ?)
Each parameter marker can then be bound to a program variable by calling SQLBindParameter.
After all SQL statements execute and their result sets process, the application frees the statement handle.
The SQL Server Native Client ODBC driver supports multiple statement handles per connection handle. Transactions are managed at the connection level, so that all work performed on all statement handles on a single connection handle are managed as part of the same transaction.