home *** CD-ROM | disk | FTP | other *** search
- ///////////////////////////////////////////////////////////////////////////////
- //
- // FILE: example3.sqc
- //
- // Sample Embedded SQL for C application
- //
- // This example demonstrates the technique of using a dummy update
- // to prevent other users from updating a row
- //
- // FUNCTIONS:
- //
- // main() - Main program
- // ErrorHandler - Embedded SQL for C error handler
- //
- // COMMENTS:
- //
- // Copyright (C) 1992 - 1994 Microsoft Corporation
- //
- ///////////////////////////////////////////////////////////////////////////////
-
- // function prototypes (instead of header file)
- void ErrorHandler (void);
-
- #include <stddef.h> // standard C run-time header
- #include <stdio.h> // standard C run-time header
- #include "gcutil.h" // utility header
-
- // GLOBAL VARIABLES
-
- ///////////////////////////////////////////////////////////////////////////////
- //
- // FUNCTION: main()
- //
- // Main application
- //
- // PARAMETERS:
- //
- // argc - count of command line args
- // argv - array of command line argument strings
- // envp - array of environment strings
- //
- // RETURNS: 0 if successful, 1 if error
- //
- // COMMENTS:
- //
- ///////////////////////////////////////////////////////////////////////////////
-
- int main (
- int argc,
- char** argv,
- char** envp)
- {
- int nRet; // for return values
- char replystr[10];
-
- EXEC SQL BEGIN DECLARE SECTION;
- // for CONNECT TO
- char szServerDatabase[(SQLID_MAX * 2)+2] = "";
- char szLoginPassword[(SQLID_MAX * 2)+2] = "";
- char fname[21];
- char lname[41];
- EXEC SQL END DECLARE SECTION;
-
- // install Embedded SQL for C error handler
- EXEC SQL WHENEVER SQLERROR CALL ErrorHandler();
- // set Embedded SQL for C options
- EXEC SQL SET OPTION LOGINTIME 10;
- EXEC SQL SET OPTION QUERYTIME 100;
-
- // display logo
- printf("Sample Embedded SQL for C application\n");
-
- // get info for CONNECT TO statement
- nRet = GetConnectToInfo(argc, argv,
- szServerDatabase,
- szLoginPassword);
- if (!nRet)
- {
- return (1);
- }
-
- // attempt connection to SQL Server
- EXEC SQL CONNECT TO :szServerDatabase
- USER :szLoginPassword;
- if (SQLCODE == 0)
- {
- printf("Connection to SQL Server established\n");
- }
- else
- {
- // problem connecting to SQL Server
- printf("ERROR: Connection to SQL Server failed\n");
- return (1);
- }
-
- EXEC SQL SET CURSORTYPE CUR_STANDARD;
-
- EXEC SQL DECLARE C1 CURSOR FOR
- select au_fname, au_lname from author2;
-
- EXEC SQL OPEN C1;
-
- while (SQLCODE == 0)
- {
-
- EXEC SQL FETCH C1 INTO :fname, :lname;
-
- if (SQLCODE == 0)
- {
- printf("%s %s\tu)pdate q)uit : ", fname, lname);
- gets( replystr );
- if ( *replystr == 'q' )
- break;
- if ( *replystr == 'u' ) {
- EXEC SQL BEGIN TRAN;
- EXEC SQL
- update author2 set au_lname=au_lname
- WHERE CURRENT OF C1
- ;
- printf( "Dummy update: %d\n", SQLCODE);
- printf( "New last name? ");
- gets( lname );
- EXEC SQL
- update author2 set au_lname=:lname
- WHERE CURRENT OF C1
- ;
- if (SQLCODE != 0)
- {
- printf("ERROR: Update failed\n");
- }
- EXEC SQL COMMIT TRAN;
-
- }
- }
-
- } // end while
-
- // close the cursor
- EXEC SQL CLOSE C1;
-
- // disconnect from SQL Server
- EXEC SQL DISCONNECT ALL;
-
- return (0);
- }
-
- ///////////////////////////////////////////////////////////////////////////////
- //
- // FUNCTION: ErrorHandler()
- //
- // Called on Embedded SQL for C error, displays fields from SQLCA
- //
- // PARAMETERS: none
- //
- // RETURNS: none
- //
- // COMMENTS:
- //
- ///////////////////////////////////////////////////////////////////////////////
-
- void ErrorHandler (void)
- {
- // display error information from SQLCA
- printf("Error Handler called:\n");
- printf(" SQL Code = %li\n", SQLCODE);
- printf(" SQL Server Message %li: '%Fs'\n", SQLERRD1, SQLERRMC);
- }
-