Вот, но для него требуется задать hWnd, иначе не работает, может быть и можно как-то побороть, но я не пробовал.
#define MAXBUFLEN 255
HENV hEnv = SQL_NULL_HENV;
HDBC hDbc;
RETCODE rc = 0;
SQLCHAR ConnStrIn[MAXBUFLEN] = "";
SQLCHAR ConnStrOut[MAXBUFLEN] = "";
SQLSMALLINT cbConnStrOut = 0;
UWORD wConnectOption = SQL_DRIVER_COMPLETE;
rc = SQLAllocEnv(&hEnv);
if( !(SQL_SUCCESS == rc) || (SQL_SUCCESS_WITH_INFO == rc))
{
printf("SQLAllocEnv failed: Error # %#x\n", rc);
exit(-1);
}
rc = SQLAllocConnect(hEnv, &hDbc);
if( !(SQL_SUCCESS == rc) || (SQL_SUCCESS_WITH_INFO == rc))
{
printf("SQLAllocConnect failed: Error # %#x\n", rc);
exit(-1);
}
int nRet = ::SQLSetConnectOption( hDbc, SQL_LOGIN_TIMEOUT, 15);
SQLRETURN retcode = SQLDriverConnect( hDbc, hWnd,
ConnStrIn, SQL_NTS,
ConnStrOut, MAXBUFLEN,
&cbConnStrOut, wConnectOption);
SQLCHAR* theDiagState = new SQLCHAR[50];
SQLINTEGER theNativeState;
SQLCHAR* theMessageText = new SQLCHAR[255];
SQLSMALLINT iOutputNo;
// здесь получаем описание ошибки, если она есть
SQLGetDiagRec( SQL_HANDLE_DBC, hDbc,
1, (SQLCHAR*)theDiagState, &theNativeState,
(SQLCHAR*)theMessageText, 100,
&iOutputNo);
printf( "Error :%s\n", theMessageText);
Соответственно нужно добавить обработку ошибок и прочее...