00001 #ifndef __MYSQL_DATABASE_LAYER_H__
00002 #define __MYSQL_DATABASE_LAYER_H__
00003
00004
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/arrstr.h"
00016
00017 #include "DatabaseLayer.h"
00018 #include "PreparedStatement.h"
00019
00020 #include "mysql.h"
00021
00022 WX_DECLARE_VOIDPTR_HASH_MAP(void*, PointerLookupMap);
00023
00024 class MysqlDatabaseLayer : public DatabaseLayer
00025 {
00026 public:
00027
00028
00029
00030
00031
00032
00033
00034 MysqlDatabaseLayer();
00035 MysqlDatabaseLayer(const wxString& strDatabase);
00036 MysqlDatabaseLayer(const wxString& strServer, const wxString& strDatabase);
00037 MysqlDatabaseLayer(const wxString& strDatabase, const wxString& strUser, const wxString& strPassword);
00038 MysqlDatabaseLayer(const wxString& strServer, const wxString& strDatabase, const wxString& strUser, const wxString& strPassword);
00039 MysqlDatabaseLayer(MYSQL* pDatabase) { m_pDatabase = pDatabase; }
00040
00041
00042 virtual ~MysqlDatabaseLayer();
00043
00044
00045 virtual bool Open(const wxString& strDatabase);
00046 virtual bool Open(const wxString& strServer, const wxString& strDatabase);
00047 virtual bool Open(const wxString& strDatabase, const wxString& strUser, const wxString& strPassword);
00048 virtual bool Open(const wxString& strServer, const wxString& strDatabase, const wxString& strUser, const wxString& strPassword);
00049
00050
00051 virtual bool Close();
00052
00053
00054 virtual void BeginTransaction();
00055 virtual void Commit();
00056 virtual void RollBack();
00057
00058
00059 virtual bool RunQuery(const wxString& strQuery, bool bParseQuery);
00060 virtual DatabaseResultSet* RunQueryWithResults(const wxString& strQuery);
00061
00062
00063 virtual PreparedStatement* PrepareStatement(const wxString& strQuery);
00064
00065 static int TranslateErrorCode(int nCode);
00066
00067 private:
00068 void InitDatabase();
00069 void ParseServerAndPort(const wxString& strServer);
00070
00071 wxString m_strServer;
00072 wxString m_strDatabase;
00073 wxString m_strUser;
00074 wxString m_strPassword;
00075 int m_iPort;
00076
00077 MYSQL* m_pDatabase;
00078
00079 #if wxUSE_UNICODE
00080 PointerLookupMap m_ResultSets;
00081 #endif
00082 };
00083
00084 #endif // __MYSQL_DATABASE_LAYER_H__
00085