/******************************************************************************* ** ** Source File Name = duowcon.c 1.3 ** ** Licensed Materials - Property of IBM ** ** (C) COPYRIGHT International Business Machines Corp. 1995, 1999 ** All Rights Reserved. ** ** US Government Users Restricted Rights - Use, duplication or ** disclosure restricted by GSA ADP Schedule Contract with IBM Corp. ** ** ** PURPOSE : ** - demonstrate basic DUOW connection to two datasources. ** - error handling ignored for simplicity ** ** For more information about these samples see the README file. ** ** For more information on programming in CLI see the: ** - "Building CLI Applications" section of the Application Building Guide, and the ** - CLI Guide and Reference. ** ** For more information on the SQL language see the SQL Reference. ** *********************************************************************************/ #include <stdio.h> #include <stdlib.h> #include <sqlcli1.h> #include "samputil.h" /* Header file for CLI sample code */ /* For the Macintosh environment when generating 68K applications */ #ifdef DB268K /* Need to include ASLM for 68K applications */ #include <LibraryManager.h> #endif /* Global Variables for user id and password. To keep samples simple, not a recommended practice. */ extern SQLCHAR server[SQL_MAX_DSN_LENGTH + 1] ; extern SQLCHAR uid[MAX_UID_LENGTH + 1] ; extern SQLCHAR pwd[MAX_PWD_LENGTH + 1] ; #define MAX_CONNECTIONS 2 /*--> SQLL1X13.SCRIPT */ /* main */ int main( int argc, char * argv[] ) { SQLHANDLE henv, hdbc[MAX_CONNECTIONS] ; SQLRETURN rc ; /* For the Macintosh environment when generating 68K applications */ #ifdef DB268K /* Before making any API calls for 68K environment, need to initialize the Library Manager */ InitLibraryManager(0,kCurrentZone,kNormalMemory); atexit(CleanupLibraryManager); #endif /* allocate an environment handle */ SQLAllocHandle( SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv ) ; /* Before allocating any connection handles, set Environment wide Connect Options Set to Connect Type 2, Syncpoint 1 */ if ( SQLSetEnvAttr( henv, SQL_CONNECTTYPE, ( SQLPOINTER ) SQL_COORDINATED_TRANS, 0 ) != SQL_SUCCESS ) { printf( ">---ERROR while setting Connect Type 2 -------------\n" ) ; return( SQL_ERROR ) ; } /*<-- */ /*--> */ if ( SQLSetEnvAttr( henv, SQL_SYNC_POINT, ( SQLPOINTER ) SQL_ONEPHASE, 0 ) != SQL_SUCCESS ) { printf( ">---ERROR while setting Syncpoint One Phase -------------\n" ) ; return( SQL_ERROR ) ; } /*<-- */ /*--> */ /* Connect to first data source */ prompted_connect( henv, &hdbc[0] ) ; /* Connect to second data source */ DBconnect( henv, &hdbc[1] ) ; /********* Start Processing Step *************************/ /* allocate statement handle, execute statement, etc. */ /********* End Processing Step ***************************/ /* Disconnect, free handles and exit */ /*<-- */ printf( "\nHit Enter to disconnect\n" ) ; getchar() ; printf( "\n>Disconnecting .....\n" ) ; /* disconnect first connection */ rc = SQLDisconnect( hdbc[0] ) ; CHECK_HANDLE( SQL_HANDLE_DBC, hdbc[0], rc ) ; /* disconnect second connection */ rc = SQLDisconnect( hdbc[1] ) ; CHECK_HANDLE( SQL_HANDLE_DBC, hdbc[1], rc ) ; /* free first connection handle */ rc = SQLFreeHandle( SQL_HANDLE_DBC, hdbc[0] ) ; CHECK_HANDLE( SQL_HANDLE_DBC, hdbc[0], rc ) ; /* free second connection handle */ rc = SQLFreeHandle( SQL_HANDLE_DBC, hdbc[1] ) ; CHECK_HANDLE( SQL_HANDLE_DBC, hdbc[1], rc ) ; /* free environment handle */ rc = SQLFreeHandle( SQL_HANDLE_ENV, henv ) ; if ( rc != SQL_SUCCESS ) return( terminate( henv, rc ) ) ; return( SQL_SUCCESS ) ; }