/*******************************************************************************
**
** Source File Name = apinfo.c
**
** Licensed Materials - Property of IBM
**
** (C) COPYRIGHT International Business Machines Corp. 1995, 2000
** All Rights Reserved.
**
** US Government Users Restricted Rights - Use, duplication or
** disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
**
**
** PURPOSE :
** Shows how to get/set info at application level.
**
** 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 <string.h>
#include <stdlib.h>
#include <sqlcli1.h>
#include "utilcli.h" /* Header file for CLI sample code */
int EnvAttrSetGet( SQLHANDLE) ;
int SuppFunctionsList( SQLHANDLE, char *, char *, char *) ;
/*******************************************************************
** main
*******************************************************************/
int main( int argc, char * argv[] )
{ SQLRETURN sqlrc = SQL_SUCCESS;
int rc = 0;
SQLHANDLE henv; /* environment handle */
char dbAlias[SQL_MAX_DSN_LENGTH + 1] ;
char user[MAX_UID_LENGTH + 1] ;
char pswd[MAX_PWD_LENGTH + 1] ;
/* checks the command line arguments */
rc = CmdLineArgsCheck1( argc, argv, dbAlias, user, pswd );
if ( rc != 0 ) return( rc ) ;
printf("\n\nCLI APP.: HOW TO GET/SET INFO AT CLI APP. LEVEL.\n");
/* allocate an environment handle */
sqlrc = SQLAllocHandle( SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv ) ;
if ( sqlrc != SQL_SUCCESS )
{ printf( "\n--ERROR while allocating the environment handle.\n" ) ;
printf( " sqlrc = %d\n", sqlrc);
printf( " line = %d\n", __LINE__);
printf( " file = %s\n", __FILE__);
return( 1 ) ;
}
rc = EnvAttrSetGet( henv) ;
rc = SuppFunctionsList( henv, dbAlias, user, pswd) ;
/* free the environment handle */
sqlrc = SQLFreeHandle( SQL_HANDLE_ENV, henv ) ;
ENV_HANDLE_CHECK( henv, sqlrc ) ;
return( 0 ) ;
} /* end main */
/******************************************************************************
** EnvAttrSetGet
******************************************************************************/
int EnvAttrSetGet( SQLHANDLE henv )
{ SQLRETURN sqlrc = SQL_SUCCESS;
int rc = 0;
SQLINTEGER output_nts;
printf("\nUSE THE CLI FUNCTIONS\n");
printf("-SQLSetEnvAttr\n-SQLGetEnvAttr\n");
printf("TO SET/GET ENVIRONMENT ATTRIBUTES:\n");
printf( "\n Set the env. attr. SQL_ATTR_OUTPUT_NTS to TRUE.\n" ) ;
sqlrc = SQLSetEnvAttr( henv,
SQL_ATTR_OUTPUT_NTS,
( SQLPOINTER ) SQL_TRUE,
0 ) ;
ENV_HANDLE_CHECK( henv, sqlrc) ;
printf( " Get the env. attr. SQL_ATTR_OUTPUT_NTS.\n" ) ;
/*-->00000611.snippet */
sqlrc = SQLGetEnvAttr( henv, SQL_ATTR_OUTPUT_NTS, &output_nts, 0, NULL ) ;
ENV_HANDLE_CHECK( henv, sqlrc) ;
/* 00000611.snippet <--*/
printf( " Null Termination of Output strings is: " ) ;
if ( output_nts == SQL_TRUE ) printf( "True\n" ) ;
else printf( "False\n" ) ;
return( 0 ) ;
}
typedef struct {
SQLUSMALLINT id ;
char * name ;
} functionInfo ;
functionInfo functions[] = {
{ SQL_API_SQLAllocConnect, "SQLAllocConnect" },
{ SQL_API_SQLAllocEnv, "SQLAllocEnv" },
{ SQL_API_SQLAllocHandle, "SQLAllocHandle" },
{ SQL_API_SQLAllocStmt, "SQLAllocStmt" },
{ SQL_API_SQLBindCol, "SQLBindCol" },
{ SQL_API_SQLBindFileToCol, "SQLBindFileToCol" },
{ SQL_API_SQLBindFileToParam, "SQLBindFileToParam" },
{ SQL_API_SQLBINDPARAM, "SQLBINDPARAM" },
{ SQL_API_SQLBindParameter, "SQLBindParameter" },
{ SQL_API_SQLBrowseConnect, "SQLBrowseConnect" },
{ SQL_API_SQLCancel, "SQLCancel" },
{ SQL_API_SQLCloseCursor, "SQLCloseCursor" },
{ SQL_API_SQLColAttribute, "SQLColAttribute" },
{ SQL_API_SQLColAttributeS, "SQLColAttributeS" },
{ SQL_API_SQLColumnPrivileges, "SQLColumnPrivileges" },
{ SQL_API_SQLColumns, "SQLColumns" },
{ SQL_API_SQLConnect, "SQLConnect" },
{ SQL_API_SQLCopyDesc, "SQLCopyDesc" },
{ SQL_API_SQLDataSources, "SQLDataSources" },
{ SQL_API_SQLDescribeCol, "SQLDescribeCol" },
{ SQL_API_SQLDescribeParam, "SQLDescribeParam" },
{ SQL_API_SQLDisconnect, "SQLDisconnect" },
{ SQL_API_SQLDriverConnect, "SQLDriverConnect" },
{ SQL_API_SQLEndTran, "SQLEndTran" },
{ SQL_API_SQLError, "SQLError" },
{ SQL_API_SQLExecDirect, "SQLExecDirect" },
{ SQL_API_SQLExecute, "SQLExecute" },
{ SQL_API_SQLExtendedFetch, "SQLExtendedFetch" },
{ SQL_API_SQLFetch, "SQLFetch" },
{ SQL_API_SQLFetchSCROLL, "SQLFetchSCROLL" },
{ SQL_API_SQLForeignKeys, "SQLForeignKeys" },
{ SQL_API_SQLFreeConnect, "SQLFreeConnect" },
{ SQL_API_SQLFreeEnv, "SQLFreeEnv" },
{ SQL_API_SQLFreeHandle, "SQLFreeHandle" },
{ SQL_API_SQLFreeStmt, "SQLFreeStmt" },
{ SQL_API_SQLGetConnectAttr, "SQLGetConnectAttr" },
{ SQL_API_SQLGetConnectOption, "SQLGetConnectOption" },
{ SQL_API_SQLGetCursorName, "SQLGetCursorName" },
{ SQL_API_SQLGetData, "SQLGetData" },
{ SQL_API_SQLGetDescField, "SQLGetDescField" },
{ SQL_API_SQLGetDescRec, "SQLGetDescRec" },
{ SQL_API_SQLGetDiagField, "SQLGetDiagField" },
{ SQL_API_SQLGetDiagRec, "SQLGetDiagRec" },
{ SQL_API_SQLGetEnvAttr, "SQLGetEnvAttr" },
{ SQL_API_SQLGetFunctions, "SQLGetFunctions" },
{ SQL_API_SQLGetInfo, "SQLGetInfo" },
{ SQL_API_SQLGetLength, "SQLGetLength" },
{ SQL_API_SQLGetPosition, "SQLGetPosition" },
{ SQL_API_SQLGetSQLCA, "SQLGetSQLCA" },
{ SQL_API_SQLGetStmtAttr, "SQLGetStmtAttr" },
{ SQL_API_SQLGetStmtOption, "SQLGetStmtOption" },
{ SQL_API_SQLGetSubString, "SQLGetSubString" },
{ SQL_API_SQLGetTypeInfo, "SQLGetTypeInfo" },
{ SQL_API_SQLMoreResults, "SQLMoreResults" },
{ SQL_API_SQLNativeSql, "SQLNativeSql" },
{ SQL_API_SQLNumParams, "SQLNumParams" },
{ SQL_API_SQLNumResultCols, "SQLNumResultCols" },
{ SQL_API_SQLParamData, "SQLParamData" },
{ SQL_API_SQLParamOptions, "SQLParamOptions" },
{ SQL_API_SQLPrepare, "SQLPrepare" },
{ SQL_API_SQLPrimaryKeys, "SQLPrimaryKeys" },
{ SQL_API_SQLProcedureColumns, "SQLProcedureColumns" },
{ SQL_API_SQLProcedures, "SQLProcedures" },
{ SQL_API_SQLPutData, "SQLPutData" },
{ SQL_API_SQLRowCount, "SQLRowCount" },
{ SQL_API_SQLSetColAttributes, "SQLSetColAttributes" },
{ SQL_API_SQLSetConnectAttr, "SQLSetConnectAttr" },
{ SQL_API_SQLSetConnection, "SQLSetConnection" },
{ SQL_API_SQLSetConnectOption, "SQLSetConnectOption" },
{ SQL_API_SQLSetCursorName, "SQLSetCursorName" },
{ SQL_API_SQLSetDescField, "SQLSetDescField" },
{ SQL_API_SQLSetDescRec, "SQLSetDescRec" },
{ SQL_API_SQLSetEnvAttr, "SQLSetEnvAttr" },
{ SQL_API_SQLSetParam, "SQLSetParam" },
{ SQL_API_SQLSetPos, "SQLSetPos" },
{ SQL_API_SQLSETSCROLLOPTIONS, "SQLSETSCROLLOPTIONS" },
{ SQL_API_SQLSETSTMTATTR, "SQLSETSTMTATTR" },
{ SQL_API_SQLSetStmtOption, "SQLSetStmtOption" },
{ SQL_API_SQLSpecialColumns, "SQLSpecialColumns" },
{ SQL_API_SQLStatistics, "SQLStatistics" },
{ SQL_API_SQLTablePrivileges, "SQLTablePrivileges" },
{ SQL_API_SQLTables, "SQLTables" },
{ SQL_API_SQLTransact, "SQLTransact" },
{ 0, ( char * ) 0 }
} ;
/******************************************************************************
** SuppFunctionsList
******************************************************************************/
int SuppFunctionsList( SQLHANDLE henv,
char dbAlias[],
char user[],
char pswd[] )
{ SQLRETURN sqlrc = SQL_SUCCESS;
int rc = 0;
SQLHANDLE hdbc; /* connection handle */
SQLUSMALLINT supported ;
int func_pos ;
printf("\nUSE THE CLI FUNCTIONS\n");
printf("-SQLAllocHandle\n-SQLConnect\n");
printf("-SQLGetFunctions\n");
printf("-SQLDisconnect\n-SQLFreeHandle\n");
printf("TO LIST THE SUPPORTED CLI FNCTIONS:\n");
/* allocate a database connection handle */
sqlrc = SQLAllocHandle( SQL_HANDLE_DBC, henv, &hdbc ) ;
HANDLE_CHECK( SQL_HANDLE_ENV, henv, sqlrc, &henv, &hdbc ) ;
/* connect to the database */
printf( "\n Connecting to the database %s ...\n", dbAlias ) ;
sqlrc = SQLConnect( hdbc,
(SQLCHAR *)dbAlias, SQL_NTS,
(SQLCHAR *)user, SQL_NTS,
(SQLCHAR *)pswd, SQL_NTS
) ;
HANDLE_CHECK( SQL_HANDLE_DBC, hdbc, sqlrc, &henv, &hdbc ) ;
printf( " Connected to the database %s.\n", dbAlias ) ;
printf(" List the supported CLI functions:\n");
func_pos = 0;
while ( functions[func_pos].id != 0 )
{ sqlrc = SQLGetFunctions( hdbc,
functions[func_pos].id,
&supported ) ;
HANDLE_CHECK( SQL_HANDLE_DBC, hdbc, sqlrc, &henv, &hdbc ) ;
if ( supported )
printf( " %-20s is supported\n",
functions[func_pos].name ) ;
else
printf( " %-20s is not supported\n",
functions[func_pos].name ) ;
func_pos++ ;
}
/********* Stop using the connection **************************/
/* disconnect from the database */
printf( "\n Disconnecting from the database %s ...\n", dbAlias ) ;
sqlrc = SQLDisconnect( hdbc ) ;
HANDLE_CHECK( SQL_HANDLE_DBC, hdbc, sqlrc, &henv, &hdbc ) ;
printf( " Disconnected from the database %s.\n", dbAlias ) ;
/* free the connection handle */
sqlrc = SQLFreeHandle( SQL_HANDLE_DBC, hdbc ) ;
HANDLE_CHECK( SQL_HANDLE_DBC, hdbc, sqlrc, &henv, &hdbc ) ;
return( 0 ) ;
}