Main Page | Class Hierarchy | Class List | Directories | File List | Class Members | File Members | Related Pages

DatabaseLayer.h

Go to the documentation of this file.
00001 #ifndef __DATABASE_LAYER_H__
00002 #define __DATABASE_LAYER_H__
00003 
00004 // For compilers that support precompilation, includes "wx.h".
00005 #include "wx/wxprec.h"
00006 
00007 #ifdef __BORLANDC__
00008     #pragma hdrstop
00009 #endif
00010 
00011 #ifndef WX_PRECOMP
00012     #include "wx/wx.h"
00013 #endif
00014 
00015 #include "wx/hashset.h"
00016 #include "wx/arrstr.h"
00017 
00018 #include "DatabaseErrorReporter.h"
00019 #include "DatabaseStringConverter.h"
00020 #include "DatabaseResultSet.h"
00021 #include "PreparedStatement.h"
00022 
00023 WX_DECLARE_HASH_SET( DatabaseResultSet*, wxPointerHash, wxPointerEqual, DatabaseResultSetHashSet );
00024 WX_DECLARE_HASH_SET( PreparedStatement*, wxPointerHash, wxPointerEqual, DatabaseStatementHashSet );
00025 
00026 class DatabaseLayer : public DatabaseErrorReporter, public DatabaseStringConverter
00027 {
00028 public:
00030   DatabaseLayer();
00031   
00033   virtual ~DatabaseLayer();
00034   
00035   // Open database
00036   virtual bool Open(const wxString& strDatabase) = 0;
00037   
00039   virtual bool Close() = 0;
00040   
00041   // transaction support
00043   virtual void BeginTransaction() = 0;
00045   virtual void Commit() = 0;
00047   virtual void RollBack() = 0;
00048  
00049   // query database
00051   virtual bool RunQuery(const wxString& strQuery);
00053   virtual bool RunQuery(const wxString& strQuery, bool bParseQueries) = 0;
00055   virtual DatabaseResultSet* RunQueryWithResults(const wxString& strQuery) = 0;
00056   
00058   virtual bool CloseResultSet(DatabaseResultSet* pResultSet);
00059 
00060   // PreparedStatement support
00062   virtual PreparedStatement* PrepareStatement(const wxString& strQuery) = 0;
00064   virtual bool CloseStatement(PreparedStatement* pStatement);
00065 
00066   // function names more consistent with JDBC and wxSQLite3
00067   // these just provide wrappers for existing functions
00069   bool ExecuteUpdate(const wxString& strQuery) { return RunQuery(strQuery); }
00071   DatabaseResultSet* ExecuteQuery(const wxString& strQuery) { return RunQueryWithResults(strQuery); }
00072 
00073 protected:
00075   void CloseResultSets();
00077   void CloseStatements();
00078   
00080   void LogResultSetForCleanup(DatabaseResultSet* pResultSet) { m_ResultSets.insert(pResultSet); }
00082   void LogStatementForCleanup(PreparedStatement* pStatement) { m_Statements.insert(pStatement); }
00083   
00084 private:
00085   DatabaseResultSetHashSet m_ResultSets;
00086   DatabaseStatementHashSet m_Statements;
00087 };
00088 
00089 #endif // __DATABASE_LAYER_H__
00090 

Generated on Sat May 13 17:31:34 2006 for databaselayer by  doxygen 1.4.1