home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 January / Chip_2001-01_cd1.bin / tema / interb / InterBase_WI-V6.0-server.exe / server / examples / gpre / dyn1.e < prev    next >
Text File  |  2000-06-23  |  3KB  |  151 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.  * The contents of this file are subject to the Interbase Public
  9.  * License Version 1.0 (the "License"); you may not use this file
  10.  * except in compliance with the License. You may obtain a copy
  11.  * of the License at http://www.Interbase.com/IPL/
  12.  *
  13.  * Software distributed under the License is distributed on an
  14.  * "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
  15.  * or implied. See the License for the specific language governing
  16.  * rights and limitations under the License.
  17.  *
  18.  * The Original Code was created by Interbase Software Corporation
  19.  * and its successors. Portions created by Borland/Inprise are
  20.  * Copyright (C) 1992-1998 and 1999-2000 Borland/Inprise. Portions
  21.  * created by InterBase Software Corporation are Copyright (C)
  22.  * 1998-1999 InterBase Software Corporation.
  23.  *
  24.  * Copyright (C) 2000 InterBase Software Corporation
  25.  * All Rights Reserved.
  26.  * Contributor(s): ______________________________________.
  27.  */
  28.  
  29. #include "example.h"
  30. #include <stdlib.h>
  31. #include <string.h>
  32.  
  33. void pr_error (char *operation);
  34.  
  35. char    *new_dbname     = "new.gdb";
  36.  
  37. char    *create_tbl     = "CREATE TABLE dbinfo (when_created DATE)";
  38. char    *insert_date    = "INSERT INTO dbinfo VALUES ('NOW')";
  39.  
  40.  
  41. /*
  42.  *  Declare a database handle, which will be used by the new database.
  43.  */
  44. EXEC SQL
  45.     SET DATABASE db = COMPILETIME "employee.gdb";
  46.  
  47. int main(ARG(int, argc), ARG(char **, argv))
  48. ARGLIST(int argc)
  49. ARGLIST(char **argv)
  50. {
  51.  
  52.     db = NULL;
  53.  
  54.     /*
  55.      *  Create a new database, establishing a connection
  56.      *  as well.
  57.      */
  58.  
  59.     EXEC SQL
  60.         EXECUTE IMMEDIATE "CREATE DATABASE 'new.gdb'";
  61.  
  62.     if (SQLCODE)
  63.     {
  64.         /* Print a descriptive message, if the database exists. */
  65.         if (SQLCODE == -902)
  66.         {
  67.             printf("\nDatabase already exists.\n");
  68.             printf("Remove %s before running this program.\n\n", new_dbname);
  69.         }
  70.  
  71.         pr_error("create database");
  72.         return 1;
  73.     }
  74.  
  75.     EXEC SQL
  76.         COMMIT RELEASE;
  77.  
  78.     if (SQLCODE)
  79.     {
  80.         pr_error("commit & release");
  81.         return 1;
  82.     }
  83.  
  84.     printf("Created database '%s'.\n\n", new_dbname);
  85.  
  86.  
  87.     /*
  88.      *  Connect to the new database and create a sample table.
  89.      */
  90.  
  91.     /* Use the database handle declared above. */
  92.     EXEC SQL
  93.         CONNECT :new_dbname AS db;
  94.     if (SQLCODE)
  95.     {
  96.         pr_error("connect database");
  97.         return 1;
  98.     }
  99.  
  100.     /* Create a sample table. */
  101.     EXEC SQL
  102.         SET TRANSACTION;
  103.     EXEC SQL
  104.         EXECUTE IMMEDIATE :create_tbl;
  105.     if (SQLCODE)
  106.     {
  107.         pr_error("create table");
  108.         return 1;
  109.     }
  110.     EXEC SQL
  111.         COMMIT RETAIN;
  112.  
  113.     /* Insert 1 row into the new table. */
  114.     EXEC SQL
  115.         SET TRANSACTION;
  116.     EXEC SQL
  117.         EXECUTE IMMEDIATE :insert_date;
  118.     if (SQLCODE)
  119.     {
  120.         pr_error("insert into");
  121.         return 1;
  122.     }
  123.     EXEC SQL
  124.         COMMIT RELEASE;
  125.  
  126.     printf("Successfully accessed the newly created database.\n\n");
  127.  
  128.     EXEC SQL
  129.         DISCONNECT db;
  130.  
  131.     return 0;
  132. }
  133.  
  134.  
  135. /*
  136.  *    Print the status, the SQLCODE, and exit.
  137.  *    Also, indicate which operation the error occured on.
  138.  */
  139. void pr_error(ARG(char *, operation))
  140. ARGLIST(char *operation)
  141. {
  142.     printf("[\n");
  143.     printf("PROBLEM ON \"%s\".\n", operation);
  144.          
  145.     isc_print_status(gds__status);
  146.  
  147.     printf("SQLCODE = %d\n", SQLCODE);
  148.     
  149.     printf("]\n");
  150. }
  151.