X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=include%2Fanna%2Fdbms.mysql%2FConnection.hpp;fp=include%2Fanna%2Fdbms.mysql%2FConnection.hpp;h=ea817c3a232670be44f888e3d93c183187cbf96d;hb=78be86969d2f26a9084b0c4af6ce43d5fa4ed3fd;hp=0000000000000000000000000000000000000000;hpb=a3b95648bd76140ef55e0b5941d423eee6c3856f;p=anna.git diff --git a/include/anna/dbms.mysql/Connection.hpp b/include/anna/dbms.mysql/Connection.hpp new file mode 100644 index 0000000..ea817c3 --- /dev/null +++ b/include/anna/dbms.mysql/Connection.hpp @@ -0,0 +1,72 @@ +// ANNA - Anna is Not Nothingness Anymore // +// // +// (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo // +// // +// See project site at http://redmine.teslayout.com/projects/anna-suite // +// See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE // + + +#ifndef anna_dbms_mysql_Connection_hpp +#define anna_dbms_mysql_Connection_hpp + + +#include +#include + +#include + +namespace anna { + +namespace dbms { + +class Database; + +namespace mysql { + +class Database; + +/** + Clase que modela la conexion con el RDBMS MySQL (tm). + + Esta clase no puede usarse directamente, ya que la capa ANNA.dbms obliga a que todas las peticiones + se hagan atraves de una instancia anna::dbms::Connection. + + Para obtener una conexion a una determinada base de datos habra que instanciar dicha base de datos + e invocar al metodo createConnection. Independientemente del tipo de conexion particular que la + base de datos retorne, debemos asignarlo a un puntero de tipo anna::dbms::Connection. +*/ +class Connection : public dbms::Connection { +public: + /** + Devuelve una cadena con la informacion referente a esta instancia. + @return Una cadena con la informacion referente a esta instancia. + */ + std::string asString() const throw(); + + /** + Operador de conversion. + \return El puntero al entorno asociado a esta base de datos. + */ + operator st_mysql*() throw() { return a_mysql; } + +private: + Database& a_mysqlDatabase; + st_mysql* a_mysql; + + Connection(Database& database, const std::string& name, const char* user, const char* password); + + bool isAvailable() const throw(RuntimeException) { return a_mysql != NULL; } + + void do_commit() throw(RuntimeException, DatabaseException); + void do_rollback() throw(); + void open() throw(DatabaseException); + void close() throw(); + + friend class anna::dbms::mysql::Database; +}; + +} +} +} + +#endif