/*******************************************************************************
**
** Source File Name = fetch.c 1.5
**
** 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 :
**
** A DB2 Version 2 sample that has been unchanged. See the CLI sample
** fetch.c for the same program updated to use the latest set of functions.
**
** Example of executing an SQL statement.
** SQLBindCol & SQLFetch is used to retrive data from the result set
** directly into application storage.
**
** 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 "v2sutil.h"
/* For the Macintosh environment when generating 68K applications */
#ifdef DB268K
/* Need to include ASLM for 68K applications */
#include <LibraryManager.h>
#endif
#define MAX_STMT_LEN 255
/* Global Variables for user id and password.
To keep samples simple, not a recommended practice.
*/
SQLCHAR server[SQL_MAX_DSN_LENGTH + 1];
SQLCHAR uid[MAX_UID_LENGTH + 1];
SQLCHAR pwd[MAX_PWD_LENGTH + 1];
/*******************************************************************
** main
*******************************************************************/
int
main( int argc, char * argv[] )
{
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;
SQLRETURN rc;
SQLCHAR sqlstmt[] = "SELECT deptname, location from org where division = 'Eastern'";
struct { SQLINTEGER ind;
SQLCHAR s[15];
} deptname, location;
/* 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
/* macro to initalize server, uid and pwd */
INIT_UID_PWD;
rc = SQLAllocEnv(&henv); /* allocate an environment handle */
if (rc != SQL_SUCCESS)
return (terminate(henv, rc));
rc = DBconnect(henv, &hdbc);/* allocate a connect handle, and connect */
if (rc != SQL_SUCCESS)
return (terminate(henv, rc));
rc = SQLAllocStmt(hdbc, &hstmt);
CHECK_DBC(hdbc, rc);
rc = SQLExecDirect(hstmt, sqlstmt, SQL_NTS);
CHECK_STMT(hstmt, rc);
rc = SQLBindCol(hstmt, 1, SQL_C_CHAR, (SQLPOINTER) deptname.s, 15,
&deptname.ind);
CHECK_STMT(hstmt, rc);
rc = SQLBindCol(hstmt, 2, SQL_C_CHAR, (SQLPOINTER) location.s, 15,
&location.ind);
CHECK_STMT(hstmt, rc);
printf("Departments in Eastern division:\n");
printf("DEPTNAME Location\n");
printf("-------------- -------------\n");
while ((rc = SQLFetch(hstmt)) == SQL_SUCCESS) {
printf("%-14.14s %-14.14s \n", deptname.s, location.s);
}
if (rc != SQL_NO_DATA_FOUND)
check_error(henv, hdbc, hstmt, rc, __LINE__, __FILE__);
rc = SQLFreeStmt(hstmt, SQL_DROP);
CHECK_STMT(hstmt, rc);
rc = SQLTransact(henv, hdbc, SQL_COMMIT);
CHECK_DBC(hdbc, rc);
printf("Disconnecting .....\n");
rc = SQLDisconnect(hdbc);
CHECK_DBC(hdbc, rc);
rc = SQLFreeConnect(hdbc);
CHECK_DBC(hdbc, rc);
rc = SQLFreeEnv(henv);
if (rc != SQL_SUCCESS)
return (terminate(henv, rc));
return (0);
} /* end main */