ANNA Suite  2020b
Multipurpose development suite for Telco applications
Database.hpp
Go to the documentation of this file.
1 // ANNA - Anna is Not Nothingness Anymore //
2 // //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
4 // //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
7 
8 
9 #ifndef anna_dbms_mysql_Database_hpp
10 #define anna_dbms_mysql_Database_hpp
11 
12 #include <anna/dbms/Database.hpp>
14 
15 namespace anna {
16 
17 namespace dbms {
18 
19 namespace mysql {
20 
24 class Database : public dbms::Database {
25 public:
32  Database(const char* dbmsName, const char* host);
33 
41  Database(const char* componentName, const char* dbmsName, const char* host);
42 
46  virtual ~Database();
47 
52  const char* getHost() const { return a_host; }
53 
59  static const char* getClassName() { return "anna::dbms::mysql::Database"; }
60 
61 private:
62  char* a_host;
63 
64  void do_initialize() noexcept(false);
65 
66  dbms::Connection* allocateConnection(const std::string& name, const char* user, const char* password)
67  noexcept(false);
68 
69  dbms::Statement* allocateStatement(const char* name, const std::string& expression, const bool isCritical)
70  noexcept(false);
71 
72  dbms::InputBind* allocateInputBind(const char* name, Data&)
73  noexcept(false);
74  void deallocate(dbms::InputBind* inputBind) ;
75 
76  dbms::OutputBind* allocateOutputBind(const char* name, Data&)
77  noexcept(false);
78  void deallocate(dbms::OutputBind* outputBind) ;
79 };
80 
81 #ifdef ANNA_RDBMS_TRACE
82 #define anna_dbms_mysql_check(a,_mysql) \
83  { \
84  Logger::write (Logger::Debug, (#a), __FILE__, __LINE__); \
85  const int status = (a); \
86  if (status != 0) { \
87  anna::dbms::mysql::ResultCode resultCode ((_mysql)); \
88  throw DatabaseException (resultCode, __FILE__, __LINE__); \
89  } \
90  }
91 #else
92 #define anna_dbms_mysql_check(a,_mysql) \
93  { \
94  const int status = (a); \
95  if (status != 0) { \
96  anna::dbms::mysql::ResultCode resultCode ((_mysql)); \
97  throw DatabaseException (resultCode, __FILE__, __LINE__); \
98  } \
99  }
100 #endif
101 }
102 }
103 }
104 
105 #endif
Database(const char *dbmsName, const char *host)
Definition: Connection.hpp:38
Definition: Statement.hpp:43
const char * getHost() const
Definition: Database.hpp:52
Definition: Database.hpp:37
Definition: Data.hpp:27
Definition: OutputBind.hpp:26
Definition: app.hpp:12
static const char * getClassName()
Definition: Database.hpp:59
Definition: Database.hpp:24
Definition: InputBind.hpp:18