#ifndef RIPDB_H_INCLUDED #define RIPDB_H_INCLUDED #ifndef IOHANDLER_H_INCLUDED #include "iohandler.h" #endif #ifndef ISO_H_INCLUDED #include "iso.h" #endif class RipDb; class RipCursor { protected: // Private types enum StatementType { InsertStatement, SelectStatement, ActionStatement }; // Construction/destruction RipCursor(); virtual ~RipCursor(); public: virtual void PrepareInsert(char *pszTable, unsigned nFields, char **ppszFieldNames, iso_char **ppszValues, unsigned *pnMaxLengths); virtual void PrepareSelect(char *pszStatement); virtual void PrepareAction(char *pszStatement); virtual void DefineOutputColumn(unsigned nCol, char *pszVar, unsigned nMaxLen, bool *pbIsNull) = 0; virtual void Execute() = 0; virtual bool Fetch() = 0; virtual void Destroy(); protected: char *m_pszStatement; enum StatementType m_stType; friend class RipDb; }; class RipDb : public IOHandler { public: // Construction/destruction RipDb(RipObject *pFile = NULL, RipDb *pMaster = NULL); // IOHandler Methods virtual IOHandler *Create(RipObject *pFile) = 0; virtual void Truncate(); virtual void Open(char *pszMode); virtual void Add(); virtual void CreateIndexes(); virtual void Rewind(); virtual bool ReadRecord(); virtual void Close(); protected: // Implementation virtual void Execute(char *pszStatement); virtual RipCursor *CreateCursor() = 0; virtual void Disconnect() = 0; virtual void Destroy(); void SetupForDb(); virtual ~RipDb(); RipDb *m_pMaster; RipCursor *m_pCursor; bool m_bBOF; bool m_bEOF; bool *m_pbIsNull; }; #endif // ! defined(RIPDB_H_INCLUDED)