00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef __C_CONNECTION_H__
00016 #define __C_CONNECTION_H__
00017
00018
00019 #include <lTypes.h>
00020 #include <lExceptions.h>
00021
00022 class DLL_External Connection
00023 {
00024 #ifdef POLITE_TEST_FRIEND
00025 friend POLITE_TEST_FRIEND;
00026 #endif // POLITE_TEST_FRIEND
00027
00028 friend class Database;
00029 friend class Cursor;
00030 friend class RefBase;
00031 friend class Object;
00032 friend class ProtoBase;
00033 friend class PersistentObject;
00034 friend class ObjectBuffer;
00035 friend class ResultBase;
00036 friend class Relation;
00037 friend class OneToOneRelationBase;
00038 friend class OneToManyRelationBase;
00039 friend class ManyToOneRelationBase;
00040 friend class ManyToManyRelationBase;
00041 friend class ChainedRelationBase;
00042
00043 protected:
00044 unsigned short _Strategies;
00045 char *_UserName;
00046 char *_Password;
00047 class Database *_Database;
00048
00049 int _Handle;
00050 int _LocalHandle;
00051 class Cursor *_DefaultCursor;
00052
00053 virtual bool _Sql(const char * const SqlCommand) = 0;
00054 virtual bool _Commit() = 0;
00055 virtual bool _Rollback() = 0;
00056 virtual bool _Savepoint(const char * const Name) = 0;
00057 virtual bool _RollbackToSavepoint(const char * const Name) = 0;
00058
00059 virtual bool _NextOID(long int &nxtoid, long int &nxtsn) = 0;
00060
00061 virtual bool _NextSN(long int curoid, long int &nxtsn) = 0;
00062
00063
00064 Connection(
00065 class Database *DB,
00066 const char *UserName,
00067 const char *Password,
00068 const int LocHandle,
00069 const int GlobHandle
00070 );
00071
00072 public:
00073 ~Connection();
00074
00075
00076 public:
00077 virtual bool Sql(const char *SqlCommand);
00078 virtual bool Commit();
00079 virtual bool Rollback();
00080 virtual bool Savepoint(const char *Name);
00081 virtual bool RollbackToSavepoint(const char *Name);
00082 virtual bool Disconnect();
00083 virtual bool Abort();
00084 virtual bool Autocommit(bool ac) = 0;
00085 virtual Connection &operator << (
00086 const char *SqlCommand
00087 );
00088 Connection &operator << (
00089 const class Cmd &Command
00090 );
00091
00092 bool operator == (const class Connection &DbConn) const;
00093
00094 bool operator != (const class Connection &DbConn) const;
00095
00096
00097
00098 virtual enum UpdatingStrategy CurrentUpdatingStrategy() const
00099
00100 {
00101 return (enum UpdatingStrategy)(_Strategies & US_MASK);
00102 };
00103 virtual bool SetUpdatingStrategy(enum UpdatingStrategy anUpdateStrategy);
00104 virtual enum WaitingStrategy CurrentWaitingStrategy() const
00105 {
00106 return (enum WaitingStrategy)(_Strategies & WS_MASK);
00107 };
00108 virtual bool SetWaitingStrategy(enum WaitingStrategy aWaitingStrategy);
00109 virtual enum LockingStrategy CurrentLockingStrategy() const
00110 {
00111 return (enum LockingStrategy)(_Strategies & LS_MASK);
00112 };
00113 virtual bool SetLockingStrategy(enum LockingStrategy aLockingStrategy);
00114 virtual enum ReadingStrategy CurrentReadingStrategy() const
00115 {
00116 return (enum ReadingStrategy)(_Strategies & RS_MASK);
00117 };
00118 virtual bool SetReadingStrategy(enum ReadingStrategy aReadingStrategy);
00119
00120 protected:
00121 char *_GetUserName() {return _UserName;};
00122 char *_GetPassword() {return _Password;};
00123
00124 virtual class Cursor *_GetNewCursor() = 0;
00125
00126 virtual bool _Open();
00127 virtual bool _Prepare(const char *SqlCommand);
00128 virtual bool _PreExecBind(
00129 const char *const VarName,
00130 const void *VarAddr,
00131 const int VarLen,
00132 const char VarType,
00133 const short *VarInd = NULL
00134 );
00135 virtual bool _Execute();
00136 virtual bool _PreFetchBind(
00137 const int Position,
00138 const void *VarAddr,
00139 const int VarLen,
00140 const char VarType,
00141 const short *VarInd = NULL
00142 );
00143 virtual bool _FetchNext();
00144 virtual bool _FetchPrev();
00145 virtual bool _Close();
00146 };
00147
00148 #endif //__C_CONNECTION_H__