/*******************************************************************************
**
** Source File Name = dbinfo.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 database 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 */
/*******************************************************************
** main
*******************************************************************/
int main( int argc, char * argv[] )
{ SQLRETURN sqlrc = SQL_SUCCESS;
int rc = 0;
SQLHANDLE henv; /* environment handle */
SQLHANDLE hdbc; /* connection handle */
SQLUSMALLINT supported; /* to check if SQLGetInfo() is supported */
SQLCHAR dbInfoBuf[255]; /* buffer for database info */
SQLSMALLINT outlen;
SQLHANDLE hstmt ; /* statement handle */
SQLINTEGER cursor_hold, autocommit ;
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\nDATABASES: GETTING/SETTING INFO ABOUT DATABASES.\n");
/* initialize the CLI application */
rc = CLIAppInit( dbAlias, user, pswd, &henv, &hdbc,
(SQLPOINTER)SQL_AUTOCOMMIT_ON);
if ( rc != 0 ) return( rc ) ;
printf("\nUSE THE CLI FUNCTIONS\n");
printf("-SQLGetFunctions\n-SQLGetInfo\n");
printf("TO GET:\n");
/* check to see if SQLGetInfo() is supported */
sqlrc = SQLGetFunctions(hdbc, SQL_API_SQLGetInfo, &supported);
HANDLE_CHECK( SQL_HANDLE_DBC, hdbc, sqlrc, &henv, &hdbc ) ;
if (supported == SQL_TRUE)
{ sqlrc = SQLGetInfo(hdbc, SQL_DATA_SOURCE_NAME, dbInfoBuf, 255, &outlen);
HANDLE_CHECK( SQL_HANDLE_DBC, hdbc, sqlrc, &henv, &hdbc ) ;
printf("\n Database Alias: %s\n", dbInfoBuf);
sqlrc = SQLGetInfo(hdbc, SQL_DATABASE_NAME, dbInfoBuf, 255, &outlen);
HANDLE_CHECK( SQL_HANDLE_DBC, hdbc, sqlrc, &henv, &hdbc ) ;
printf(" Database Name: %s\n", dbInfoBuf);
}
else printf( "\nSQLGetInfo is not supported!\n" ) ;
printf("\nUSE THE CLI FUNCTIONS\n");
printf("-SQLGetConnectAttr\n-SQLAllocHandle\n");
printf("-SQLGetStmtAttr\n-SQLFreeHandle\n");
printf("TO GET:\n");
/*--> 00003362.snippet */
sqlrc = SQLGetConnectAttr( hdbc, SQL_AUTOCOMMIT, &autocommit, 0, NULL ) ;
HANDLE_CHECK( SQL_HANDLE_DBC, hdbc, sqlrc, &henv, &hdbc ) ;
printf("\n A connection attribute...\n");
printf( " Autocommit is: " ) ;
if ( autocommit == SQL_AUTOCOMMIT_ON ) printf( "ON\n" ) ;
else printf( "OFF\n" ) ;
/* 00003362.snippet <--*/
/* allocate a statement handle */
sqlrc = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ;
HANDLE_CHECK( SQL_HANDLE_DBC, hdbc, sqlrc, &henv, &hdbc ) ;
/*--> 00003365.snippet */
sqlrc = SQLGetStmtAttr( hstmt, SQL_CURSOR_HOLD, &cursor_hold, 0, NULL ) ;
HANDLE_CHECK( SQL_HANDLE_STMT, hstmt, sqlrc, &henv, &hdbc ) ;
printf(" A statement attribute...\n");
printf( " Cursor With Hold is: " ) ;
if ( cursor_hold == SQL_CURSOR_HOLD_ON ) printf( "ON\n" ) ;
else printf( "OFF\n" ) ;
/* 00003365.snippet <--*/
/* free the statement handle */
sqlrc = SQLFreeHandle( SQL_HANDLE_STMT, hstmt ) ;
HANDLE_CHECK( SQL_HANDLE_STMT, hstmt, sqlrc, &henv, &hdbc ) ;
/* terminate the CLI application */
rc = CLIAppTerm( &henv, &hdbc, dbAlias);
return( rc ) ;
} /* end main */