/******************************************************************************
**
** Source File Name = utilapi.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 :
** - contains functions that use administrative APIs:
**
** DbCreate - create and catalog a database
** DbDrop - drop and uncatalog a database
**
** 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 <stdlib.h>
#include <string.h>
#include <sqlutil.h>
#include <sqlenv.h>
#include "utilapi.h"
/******************************************************************************
** DbCreate - create and catalog a database
** using administrative APIs
******************************************************************************/
int DbCreate( char remoteNodeName[],
char user[],
char pswd[],
char dbName[],
char dbAlias[] )
{ int rc = 0;
struct sqlca sqlca;
struct sqledbdesc dbDesc;
struct sqledbcountryinfo dbCountryInfo;
printf("\n\nCreating the database %s...\n", dbAlias);
if (strlen (remoteNodeName) > 0)
{ /* attach to the remote instance */
sqleatin (remoteNodeName, user, pswd, &sqlca);
if (sqlca.sqlcode != 0)
{ printf("\nError while attaching to the remote node %s.\n",
remoteNodeName);
return(1);
}
}
/* prepare the structures needed to create a database */
strcpy(dbDesc.sqldbdid, SQLE_DBDESC_2);
dbDesc.sqldbccp = 0;
dbDesc.sqldbcss = SQL_CS_USER ;
dbDesc.sqldbsgp = 0;
dbDesc.sqldbnsg = 10;
dbDesc.sqltsext = -1;
dbDesc.sqlcatts = NULL;
dbDesc.sqlusrts = NULL;
dbDesc.sqltmpts = NULL;
strcpy( dbCountryInfo.sqldbcodeset, "IBM-850") ;
strcpy( dbCountryInfo.sqldblocale, "En_US") ;
/* create and catalog the database */
sqlecrea( dbName,
dbAlias,
"",
&dbDesc,
&dbCountryInfo,
'\0',
NULL,
&sqlca
) ;
if (sqlca.sqlcode != 0)
{ printf("\nError while creating the database %s.\n", dbAlias);
return(1);
}
printf("The database %s created.\n", dbAlias);
if (strlen (remoteNodeName) > 0)
{ /* detach from the remote instance */
sqledtin( &sqlca);
if (sqlca.sqlcode != 0)
{ printf("\nError while detaching from the remote node %s.\n",
remoteNodeName);
return(1);
}
}
return (0);
}
/******************************************************************************
** DbDrop - drop and uncatalog a database
** using administrative APIs
******************************************************************************/
int DbDrop( char remoteNodeName[],
char user[],
char pswd[],
char dbAlias[] )
{ int rc = 0;
struct sqlca sqlca;
printf("\nDropping the database %s...\n", dbAlias);
if (strlen (remoteNodeName) > 0)
{ /* attach to the remote instance */
sqleatin (remoteNodeName, user, pswd, &sqlca);
if (sqlca.sqlcode != 0)
{ printf("\nError while attaching to the remote node %s.\n",
remoteNodeName);
return(1);
}
}
/* drop and uncatalog the database */
sqledrpd( dbAlias, &sqlca);
if (sqlca.sqlcode != 0)
{ printf("\nError while dropping the database %s.\n", dbAlias);
return(1);
}
printf("The database %s was dropped.\n", dbAlias);
if (strlen (remoteNodeName) > 0)
{ /* detach from the remote instance */
sqledtin( &sqlca);
if (sqlca.sqlcode != 0)
{ printf("\nError while detaching from the remote node %s.\n",
remoteNodeName);
return(1);
}
}
return (0);
}