1 // ANNA - Anna is Not Nothingness Anymore //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
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 //
9 #ifndef anna_dbms_mysql_Connection_hpp
10 #define anna_dbms_mysql_Connection_hpp
13 #include <anna/dbms/Connection.hpp>
14 #include <anna/dbms/DatabaseException.hpp>
16 #include <anna/dbms.mysql/forward.hpp>
29 Clase que modela la conexion con el RDBMS MySQL (tm).
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.
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.
38 class Connection : public dbms::Connection {
41 Devuelve una cadena con la informacion referente a esta instancia.
42 @return Una cadena con la informacion referente a esta instancia.
44 std::string asString() const throw();
47 Operador de conversion.
48 \return El puntero al entorno asociado a esta base de datos.
50 operator st_mysql*() throw() { return a_mysql; }
53 Database& a_mysqlDatabase;
56 Connection(Database& database, const std::string& name, const char* user, const char* password);
58 bool isAvailable() const throw(RuntimeException) { return a_mysql != NULL; }
60 void do_commit() throw(RuntimeException, DatabaseException);
61 void do_rollback() throw();
62 void open() throw(DatabaseException);
65 friend class anna::dbms::mysql::Database;