// == HEADER FILES == #include "stdafx.h" #ifdef WIN32 #include #endif // WINDOWS #include #include "myClock.h" // == GLOBAL VARIABLES == static SQLHANDLE henv; // == PROTOTYPES == static int checkRC(RETCODE, char *, SQLHANDLE, SQLHANDLE, SQLHANDLE); // == DEFINES == #define MAX_CONNECT_STRING (1024) #define TREAT_SUCCESS_WITH_INFO_FATAL (1) #define chkRC(errorMsg) { \ RETCODE __rc; \ if ((__rc = checkRC (rc, errorMsg, henv, hdbc, hstmt)) != SQL_SUCCESS) { \ if (!(__rc == SQL_SUCCESS_WITH_INFO && TREAT_SUCCESS_WITH_INFO_FATAL)) { \ goto exit; \ } \ } \ if (0) printf ("[INFO]: %s is successful.\n", errorMsg); \ } // == FUNCTIONS == static int checkRC(RETCODE retCode, char *msgString, SQLHANDLE henv, SQLHANDLE hdbc, SQLHANDLE hstmt) { RETCODE rc = SQL_SUCCESS; SQLSMALLINT handleType = (hstmt != NULL ? SQL_HANDLE_STMT : (hdbc != NULL ? SQL_HANDLE_DBC : SQL_HANDLE_ENV)); SQLHANDLE handle = (hstmt != NULL ? hstmt : (hdbc != NULL ? hdbc : henv)); SQLWCHAR sqlState[6], msg[SQL_MAX_MESSAGE_LENGTH]; SQLINTEGER nativeError; SQLSMALLINT recNum = 1; SQLSMALLINT msgLen; if (retCode == SQL_SUCCESS) { return rc; } if (handle == NULL) { rc = SQL_ERROR; return rc; } while ((rc = SQLGetDiagRec(handleType, handle, recNum, sqlState, &nativeError, msg, sizeof(msg), &msgLen)) != SQL_NO_DATA) { printf("ERROR: %s", msgString); wprintf(L" [NativeError: %d, SQLSTATE: %s, errorMsg: %s]\n", nativeError, sqlState, msg); recNum++; } return retCode; } // == MAIN ENTRY FUNCTION == int main(int argc, _TCHAR* argv[]) { // -- Define variables -- RETCODE rc = SQL_SUCCESS; SQLHANDLE hdbc, hstmt; SQLWCHAR sConnectStringOut[MAX_CONNECT_STRING]; SQLSMALLINT lenConnectString = MAX_CONNECT_STRING; SQLSMALLINT lenConnectStringOut = MAX_CONNECT_STRING; SQLWCHAR sDriverName[128], sDriverVersion[128]; static SQLWCHAR sConnectStrings[][MAX_CONNECT_STRING] = { L"Driver=MySQL ODBC 5.3 Driver for Informatica - R27;Server=INW00006335;Database=rdhuvad;Port=3306;USER=someuser;PASSWORD=somepass;OPTION=3", L"Driver=MySQL ODBC 5.3 Driver for Informatica - R27;Server=styleseat1.cflzzfv5lqse.us-east-1.rds.amazonaws.com;Database=styleseatdb1;Port=3306;USER=someuser;PASSWORD=somepass;OPTION=3", L"Driver=MySQL ODBC 5.3 Driver for Informatica - R27;Server=informaticacloud-cluster.cluster-cj8irztl1mku.us-west-2.rds.amazonaws.com;Database=aurorasqoop;Port=3306;USER=someuser;PASSWORD=somepass;OPTION=3", L"Driver=MariaDB ODBC 2.0 Driver for Informatica - R27;Server=INW00006335;Database=rdhuvad;Port=3306;USER=someuser;PASSWORD=somepass;OPTION=3", L"Driver=MariaDB ODBC 2.0 Driver for Informatica - R27;Server=styleseat1.cflzzfv5lqse.us-east-1.rds.amazonaws.com;Database=styleseatdb1;Port=3306;USER=someuser;PASSWORD=somepass;OPTION=3", L"Driver=MariaDB ODBC 2.0 Driver for Informatica - R27;Server=informaticacloud-cluster.cluster-cj8irztl1mku.us-west-2.rds.amazonaws.com;Database=aurorasqoop;Port=3306;USER=someuser;PASSWORD=somepass;OPTION=3", L"" }; henv = hdbc = hstmt = NULL; // -- Allocate environment handle -- rc = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); chkRC("SQLAllocHandle(SQL_HANDLE_ENV)"); // -- Set ODBC Version -- rc = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER*)SQL_OV_ODBC3, 0); chkRC("SQLSetEnvAttr(SQL_ATTR_ODBC_VERSION)"); // -- Allocate database handle -- rc = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); chkRC("SQLAllocHandle(SQL_HANDLE_DBC)"); for (int i = 0; sConnectStrings[i][0] != '\0'; i++) { wprintf(L"\n=== Connection String: [%s] ===\n", sConnectStrings[i]); lenConnectStringOut = MAX_CONNECT_STRING; // -- Connect to the database -- rc = SQLDriverConnect(hdbc, NULL, sConnectStrings[i], lenConnectString, sConnectStringOut, lenConnectStringOut, &lenConnectStringOut, SQL_DRIVER_NOPROMPT); chkRC("SQLDriverConnect()"); rc = SQLSetConnectAttr(hdbc, SQL_AUTOCOMMIT, (SQLPOINTER)SQL_AUTOCOMMIT_OFF, SQL_NTS); chkRC("SQLSetConnectAttr()"); rc = SQLGetInfo(hdbc, SQL_DRIVER_NAME, sDriverName, sizeof(sDriverName), NULL); chkRC("SQLGetInfo(SQL_DRIVER_NAME)"); rc = SQLGetInfo(hdbc, SQL_DRIVER_VER, sDriverVersion, sizeof(sDriverVersion), NULL); chkRC("SQLGetInfo(SQL_DRIVER_VER)"); wprintf(L"=== Driver Name: [%s], Version: [%s] ===\n", sDriverName, sDriverVersion); // -- Disconnect the database -- rc = SQLDisconnect(hdbc); chkRC("SQLDisconnect()"); } // -- Deallocate database handle -- rc = SQLFreeHandle(SQL_HANDLE_DBC, hdbc); chkRC("SQLFreeHandle(SQL_HANDLE_DBC)"); // -- Deallocate environment handle -- rc = SQLFreeHandle(SQL_HANDLE_ENV, henv); chkRC("SQLFreeHandle(SQL_HANDLE_ENV)"); exit: return rc; }