home *** CD-ROM | disk | FTP | other *** search
/ PC World 1999 May / PCWorld_1999-05_cd.bin / software / Vyzkuste / inprise / INTRBASE_55 / EXAMPLES / API / DYN1.E < prev    next >
Text File  |  1998-10-18  |  2KB  |  132 lines

  1. /*
  2.  *    Program type:    Embedded Dynamic SQL
  3.  *
  4.  *    Description:
  5.  *        This program creates a new database, using a static SQL string.
  6.  *        The newly created database is accessed after its creation,
  7.  *        and a sample table is added.
  8.  */
  9.  
  10. #include "example.h"
  11. #include <stdlib.h>
  12. #include <string.h>
  13.  
  14. void pr_error PROTO((char *operation));
  15.  
  16. char    *new_dbname     = "new.gdb";
  17.  
  18. char    *create_tbl     = "CREATE TABLE dbinfo (when_created DATE)";
  19. char    *insert_date    = "INSERT INTO dbinfo VALUES ('NOW')";
  20.  
  21.  
  22. /*
  23.  *  Declare a database handle, which will be used by the new database.
  24.  */
  25. EXEC SQL
  26.     SET DATABASE db = COMPILETIME "employee.gdb";
  27.  
  28. int main(ARG(int, argc), ARG(char **, argv))
  29. ARGLIST(int argc)
  30. ARGLIST(char **argv)
  31. {
  32.  
  33.     db = NULL;
  34.  
  35.     /*
  36.      *  Create a new database, establishing a connection
  37.      *  as well.
  38.      */
  39.  
  40.     EXEC SQL
  41.         EXECUTE IMMEDIATE "CREATE DATABASE 'new.gdb'";
  42.  
  43.     if (SQLCODE)
  44.     {
  45.         /* Print a descriptive message, if the database exists. */
  46.         if (SQLCODE == -902)
  47.         {
  48.             printf("\nDatabase already exists.\n");
  49.             printf("Remove %s before running this program.\n\n", new_dbname);
  50.         }
  51.  
  52.         pr_error("create database");
  53.         return 1;
  54.     }
  55.  
  56.     EXEC SQL
  57.         COMMIT RELEASE;
  58.  
  59.     if (SQLCODE)
  60.     {
  61.         pr_error("commit & release");
  62.         return 1;
  63.     }
  64.  
  65.     printf("Created database '%s'.\n\n", new_dbname);
  66.  
  67.  
  68.     /*
  69.      *  Connect to the new database and create a sample table.
  70.      */
  71.  
  72.     /* Use the database handle declared above. */
  73.     EXEC SQL
  74.         CONNECT :new_dbname AS db;
  75.     if (SQLCODE)
  76.     {
  77.         pr_error("connect database");
  78.         return 1;
  79.     }
  80.  
  81.     /* Create a sample table. */
  82.     EXEC SQL
  83.         SET TRANSACTION;
  84.     EXEC SQL
  85.         EXECUTE IMMEDIATE :create_tbl;
  86.     if (SQLCODE)
  87.     {
  88.         pr_error("create table");
  89.         return 1;
  90.     }
  91.     EXEC SQL
  92.         COMMIT RETAIN;
  93.  
  94.     /* Insert 1 row into the new table. */
  95.     EXEC SQL
  96.         SET TRANSACTION;
  97.     EXEC SQL
  98.         EXECUTE IMMEDIATE :insert_date;
  99.     if (SQLCODE)
  100.     {
  101.         pr_error("insert into");
  102.         return 1;
  103.     }
  104.     EXEC SQL
  105.         COMMIT RELEASE;
  106.  
  107.     printf("Successfully accessed the newly created database.\n\n");
  108.  
  109.     EXEC SQL
  110.         DISCONNECT db;
  111.  
  112.     return 0;
  113. }
  114.  
  115.  
  116. /*
  117.  *    Print the status, the SQLCODE, and exit.
  118.  *    Also, indicate which operation the error occured on.
  119.  */
  120. void pr_error(ARG(char *, operation))
  121. ARGLIST(char *operation)
  122. {
  123.     printf("[\n");
  124.     printf("PROBLEM ON \"%s\".\n", operation);
  125.          
  126.     isc_print_status(gds__status);
  127.  
  128.     printf("SQLCODE = %d\n", SQLCODE);
  129.     
  130.     printf("]\n");
  131. }
  132.