Add no-deprecated to warnings due to dynamic exceptions.
[anna.git] / include / anna / dbms.mysql / Connection.hpp
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_Connection_hpp
10 #define anna_dbms_mysql_Connection_hpp
11
12
13 #include <anna/dbms/Connection.hpp>
14 #include <anna/dbms/DatabaseException.hpp>
15
16 #include <anna/dbms.mysql/forward.hpp>
17
18 namespace anna {
19
20 namespace dbms {
21
22 class Database;
23
24 namespace mysql {
25
26 class Database;
27
28 /**
29    Clase que modela la conexion con el RDBMS MySQL (tm).
30
31    Esta clase no puede usarse directamente, ya que la capa ANNA.dbms obliga a que todas las peticiones
32    se hagan atraves de una instancia anna::dbms::Connection.
33
34    Para obtener una conexion a una determinada base de datos habra que instanciar dicha base de datos
35    e invocar al metodo createConnection. Independientemente del tipo de conexion particular que la
36    base de datos retorne, debemos asignarlo a un puntero de tipo anna::dbms::Connection.
37 */
38 class Connection : public dbms::Connection {
39 public:
40   /**
41      Devuelve una cadena con la informacion referente a esta instancia.
42      @return Una cadena con la informacion referente a esta instancia.
43   */
44   std::string asString() const throw();
45
46   /**
47      Operador de conversion.
48      \return El puntero al entorno asociado a esta base de datos.
49   */
50   operator st_mysql*() throw() { return a_mysql; }
51
52 private:
53   Database& a_mysqlDatabase;
54   st_mysql* a_mysql;
55
56   Connection(Database& database, const std::string& name, const char* user, const char* password);
57
58   bool isAvailable() const throw(RuntimeException) { return a_mysql != NULL; }
59
60   void do_commit() throw(RuntimeException, DatabaseException);
61   void do_rollback() throw();
62   void open() throw(DatabaseException);
63   void close() throw();
64
65   friend class anna::dbms::mysql::Database;
66 };
67
68 }
69 }
70 }
71
72 #endif