home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / DBObject.sc < prev    next >
Text File  |  1996-05-31  |  3KB  |  123 lines

  1. /*---------------------------------------------------------------------------
  2.  *
  3.  * Copyright (c) 1993 by Westmount Technology B.V., Delft, The Netherlands.
  4.  *
  5.  * This software is furnished under a license and may be used only in
  6.  * accordance with the terms of such license and with the inclusion of
  7.  * the above copyright notice. This software or any other copies thereof
  8.  * may not be provided or otherwise made available to any other person.
  9.  * No title to and ownership of the software is hereby transferred.
  10.  *
  11.  * The information in this software is subject to change without notice
  12.  * and should not be construed as a commitment by Westmount Technology B.V.
  13.  *
  14.  *---------------------------------------------------------------------------
  15.  *
  16.  *    File        : @(#)DBObject_ing.sc    1.7
  17.  *    Author        : frmo
  18.  *    Original date    : 10-3-1993
  19.  *    Description    : Base Class for all Database Classes
  20.  *
  21.  *---------------------------------------------------------------------------
  22.  */
  23. static const char SccsId[]="@(#)DBObject_ing.sc    1.7    11/5/93 Copyright 1993 Westmount Technology";
  24.  
  25. #include "stream.h"
  26.  
  27. #include <rw/cstring.h>
  28.  
  29. #ifndef DBOBJECT_HXX
  30. #include "DBObject.hxx"
  31. #endif
  32.  
  33. EXEC SQL INCLUDE SQLCA;
  34.  
  35. EXEC SQL BEGIN DECLARE SECTION;
  36. #define MAX_NAME_LEN 81
  37. EXEC SQL END DECLARE SECTION;
  38.  
  39. static unsigned hashInt(const int& i)
  40. {
  41.     return i;
  42. }
  43.  
  44. static unsigned hashName(const RWCString& s)
  45. {
  46.     return s.hash();
  47. }
  48.  
  49. DBObject::DBObject(const RWCString &name) :
  50.     dbState(CREATED),
  51.     className(name)
  52. {
  53. }
  54.  
  55. DBObject::~DBObject()
  56. {
  57. }
  58.  
  59. int DBObject::connectDB(const char *name)
  60. {
  61.     const
  62.     EXEC SQL BEGIN DECLARE SECTION;
  63.     char *dbName = name;
  64.     EXEC SQL END DECLARE SECTION;
  65.  
  66.     EXEC SQL WHENEVER SQLERROR CALL SQLPRINT;
  67.     EXEC SQL WHENEVER SQLWARNING CALL SQLPRINT;
  68.     EXEC SQL CONNECT :dbName;
  69.  
  70.     if (sqlca.sqlcode != 0)
  71.         return -1;
  72.  
  73.     return 0;
  74. }
  75.  
  76. int DBObject::beginWork()
  77. {
  78.     // no-op: automatically done by Ingres
  79.     return 0;
  80. }
  81.  
  82. int DBObject::commit()
  83. {
  84.     EXEC SQL COMMIT;
  85.     return sqlca.sqlcode != 0 ? -1 : 0;
  86. }
  87.  
  88. int DBObject::rollback()
  89. {
  90.     EXEC SQL ROLLBACK;
  91.     return sqlca.sqlcode != 0 ? -1 : 0;
  92. }
  93.  
  94. int DBObject::notFound()
  95. {
  96.     return dbState == SQL_ERROR && sqlca.sqlcode == 100;
  97. }
  98.  
  99. void DBObject::resetState()
  100. {
  101.     dbState = CREATED;
  102. }
  103.  
  104. int DBObject::processSqlStatus()
  105. {
  106.     switch (dbState) {
  107.     case CREATED:
  108.     case NORMAL:
  109.         if (sqlca.sqlcode != 0) {
  110.             dbState = SQL_ERROR;
  111.             return -1;
  112.         } else {
  113.             dbState = NORMAL;
  114.             return 0;
  115.         }
  116.     case SQL_ERROR:
  117.     case TYPE_ERROR:
  118.         return -1;
  119.     }
  120.     return -1;
  121. }
  122.  
  123.