Establishing a connection

Your application must establish a connection before it can carry out any database operations.

StepsTo establish an ODBC connection

  1. Allocate an ODBC environment:

    SQLHENV env; 
    SQLRETURN retcode; 
    retcode = SQLAllocHandle( SQL_HANDLE_ENV,  
                  SQL_NULL_HANDLE, &env );
    
  2. Declare the ODBC version.

    By declaring that the application follows ODBC version 3, SQLSTATE values and some other version-dependent features are set to the proper behavior. For example:

    retcode = SQLSetEnvAttr( env,   
                  SQL_ATTR_ODBC_VERSION,               (void*)SQL_OV_ODBC3, 0);
    
  3. If necessary, assemble the data source or connection string.

    Depending on your application, you can have a hard-coded data source or connection string, or you can store it externally for greater flexibility.

  4. Allocate an ODBC connection handle:

    retcode = SQLAllocHandle( SQL_HANDLE_DBC, env, 
                  &dbc );
    
  5. Set any connection attributes that must be set before connecting. (Some connection attributes must be set before establishing a connection, while others can be set either before or after.) For example:

    retcode = SQLSetConnectAttr( dbc,
    SQL_AUTOCOMMIT,     
                 (SQLPOINTER)
    SQL_AUTOCOMMIT_OFF,
                  SQL_IS_UINTEGER );
    
  6. Call the ODBC connection function:

    if (retcode == SQL_SUCCESS ||
       retcode == SQL_SUCCESS_WITH_INFO)
    {
       printf( "dbc allocated\n" );
       retcode = SQLConnect( dbc,
               (SQLCHAR*) "MANGO", SQL_NTS,
               (SQLCHAR* ) "sa", SQL_NTS,
               (SQLCHAR*) "", SQL_NTS );
       if (retcode == SQL_SUCCESS ||
         retcode == SQL_SUCCESS_WITH_INFO)
       {
         // successfully connected.
       }
    }
    

You can find a complete sample of establishing a connection in your installation directory.

Notes on usage

retcode = SQLSetConnectAttr( dbc, SQL_AUTOCOMMIT,
            (SQLPOINTER)SQL_AUTOCOMMIT_OFF,
              SQL_IS_UINTEGER );

Many aspects of the connection can be controlled through the connection parameters. For more information, see Chapter 2, “Connecting to a Database.”

For more information including a list of connection attributes, see SQLSetConnectAttr in the Microsoft ODBC Programmer's Reference.