00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef __C_DATABASE_H__
00016 #define __C_DATABASE_H__
00017
00018
00019 #include <fstream.h>
00020
00021
00022 #include <lDefs.h>
00023 #include <lExceptions.h>
00024
00025 class DLL_External Database
00026 {
00027 #ifdef POLITE_TEST_FRIEND
00028 friend POLITE_TEST_FRIEND;
00029 #endif // POLITE_TEST_FRIEND
00030
00031 friend class Connection;
00032 friend class ObjectBuffer;
00033
00034 protected:
00035 unsigned short _Strategies;
00036 char *_ConnectString;
00037 class Connection *_Connections[MAX_CONNECTION_PER_DATABASE];
00038 int _FreeConnections[MAX_CONNECTION_PER_DATABASE];
00039 int _FirstFreeConnection;
00040 static class Connection *_AllConnections[MAX_CONNECTION];
00041 static int _FreeAllConnections[MAX_CONNECTION];
00042 static int _FirstFreeAllConnection;
00043
00044 bool _FindFreeConnectionHandles(int &LocHandle, int &GlobHandle);
00045 void _DisposeConnectionHandles(int &LocHandle, int &GlobHandle);
00046
00047 virtual bool _Commit();
00048 virtual bool _Rollback();
00049
00050 public:
00051 Database(const char * const ConnectString = NULL);
00052 ~Database();
00053
00054 virtual bool Assign(const char *ConnectString);
00055 virtual bool Commit();
00056 virtual bool Rollback();
00057 virtual class Connection *Connect(
00058 const char *UserName,
00059 const char *Password
00060 ) = 0;
00061
00062 virtual bool WriteDDL(ofstream &S) = 0;
00063
00064 virtual char *ColumnTypeDDL(char coltype, int collen) = 0;
00065
00066
00067
00068
00069 virtual enum UpdatingStrategy CurrentUpdatingStrategy() const
00070
00071 {
00072 return (enum UpdatingStrategy)(_Strategies & US_MASK);
00073 };
00074 virtual bool SetUpdatingStrategy(enum UpdatingStrategy anUpdateStrategy);
00075 virtual enum WaitingStrategy CurrentWaitingStrategy() const
00076 {
00077 return (enum WaitingStrategy)(_Strategies & WS_MASK);
00078 };
00079 virtual bool SetWaitingStrategy(enum WaitingStrategy aWaitingStrategy);
00080 virtual enum LockingStrategy CurrentLockingStrategy() const
00081 {
00082 return (enum LockingStrategy)(_Strategies & LS_MASK);
00083 };
00084 virtual bool SetLockingStrategy(enum LockingStrategy aLockingStrategy);
00085 virtual enum ReadingStrategy CurrentReadingStrategy() const
00086 {
00087 return (enum ReadingStrategy)(_Strategies & RS_MASK);
00088 };
00089 virtual bool SetReadingStrategy(enum ReadingStrategy aReadingStrategy);
00090
00091 };
00092
00093 #endif //__GC_DATABASE_H__