Manage
The manage step provides data management functionality for your application and/or process. Below is the code for Manage(): /* * Manage() * * This function performs simple record functions of add, delete and gets */ void Manage(void) {
os_printf(DH_STRING_LITERAL("MANAGE\n"));
/* delete any existing records */ Delete_Records(); /* populate the table with data */ Add_CustomerMaster_Records(); /* display contents of table */ Display_Records(); /* update a record under locking control */ Update_CustomerMaster_Record(); /* display again after update and effects of lock */ Display_Records(); } /* * Delete_Records() * * This function deletes all the records in the table */ void Delete_Records(void) {
os_printf(DH_STRING_LITERAL("\tDelete records...\n"));
EXEC SQL DELETE FROM custmast ; if (sqlca.sqlcode < 0) Handle_Error(sqlca.sqlcode, sqlca.sqlerrm); EXEC SQL COMMIT WORK ; } /* * Add_CustomerMaster_Records() * * This function adds records to table CustomerMaster from an * array of strings */ void Add_CustomerMaster_Records(void) {
EXEC SQL BEGIN DECLARE SECTION ; char sCommand[512]; EXEC SQL END DECLARE SECTION ; dh_char_t *data[] = {
DH_STRING_LITERAL("('1000','92867','CA','1','Bryan Williams','2999 Regency','Orange')"),
DH_STRING_LITERAL("('1001','61434','CT','1','Michael Jordan','13 Main','Harford')"),
DH_STRING_LITERAL("('1002','73677','GA','1','Joshua Brown','4356 Cambridge','Atlanta')"),
DH_STRING_LITERAL("('1003','10034','MO','1','Keyon Dooling','19771 Park Avenue','Columbia')")
}; int i; int nRecords = sizeof(data) / sizeof(data[0]); Delete_Records(); os_printf(DH_STRING_LITERAL("\tAdd records...\n"));
/* add one record at time to table */ for (i = 0; i < nRecords; i++) {
os_sprintf (sCommand, DH_STRING_LITERAL("INSERT INTO custmast VALUES %s"), data[i]);
EXEC SQL EXECUTE IMMEDIATE :sCommand ; if (sqlca.sqlcode) Handle_Error(sqlca.sqlcode, sqlca.sqlerrm); } EXEC SQL COMMIT WORK; } /* * Display_Records() * * This function displays the contents of a table. */ void Display_Records(void) {
EXEC SQL BEGIN DECLARE SECTION ; CHAR custnumb[5+1]; CHAR custname[47+1]; EXEC SQL END DECLARE SECTION ; os_printf(DH_STRING_LITERAL("\tDisplay records..."));
EXEC SQL DECLARE curs CURSOR FOR SELECT custmast.cm_custnumb, custmast.cm_custname FROM custmast; if (sqlca.sqlcode) Handle_Error(sqlca.sqlcode, sqlca.sqlerrm); EXEC SQL OPEN curs; if (sqlca.sqlcode) Handle_Error(sqlca.sqlcode, sqlca.sqlerrm); EXEC SQL FETCH curs INTO :custnumb, :custname; /* fetch and display each individual record */ while (!sqlca.sqlcode) {
os_printf(DH_STRING_LITERAL("\n\t\t%-8s%10s\n"),custnumb, custname);
EXEC SQL FETCH curs INTO :custnumb, :custname; } EXEC SQL CLOSE curs ; } /* * Update_CustomerMaster_Records() * * Update one record under locking control to demonstrate the effects * of locking */ void Update_CustomerMaster_Record(void) {
os_printf(DH_STRING_LITERAL("\tUpdate record...\n"));
EXEC SQL UPDATE custmast SET cm_custname = 'KEYON DOOLING' WHERE cm_custnumb = '1003'; if (sqlca.sqlcode) Handle_Error(sqlca.sqlcode, sqlca.sqlerrm); os_printf(DH_STRING_LITERAL("\tPress <ENTER> key to unlock\n"));
getchar(); EXEC SQL COMMIT WORK; } |
|||