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_Statement_hpp
10 #define anna_dbms_mysql_Statement_hpp
12 #include <anna/dbms/Statement.hpp>
14 #include <anna/dbms.mysql/forward.hpp>
27 Clase que facilita la ejecucion de sentencias SQL a traves del RDBMS MySQL (tm).
29 Esta clase no puede usarse directamente, ya que la capa ANNA.dbms obliga a que todas las peticiones
30 se hagan atraves de una instancia anna::dbms::Statement.
32 Para obtener la instancia de un comando para una determinada base de datos habra que instanciar
33 dicha base de datos e invocar al metodo createStatement. Independientemente del tipo de comando
34 particular que la base de datos retorne, debemos asignarlo a un puntero de tipo anna::dbms::Statement.
36 class Statement : public dbms::Statement {
44 Operador de conversion.
45 \return El puntero MYSQL_STMT de esta sentencia.
47 operator st_mysql_stmt*() throw() { return a_mysqlStmt; }
50 * Obtiene el array asociado a los valores de entrada.
51 * \return El array asociado a los valores de entrada.
52 * \warning Exclusivamente uso interno.
54 st_mysql_bind* getBindParams() throw() { return a_params; }
57 * Obtiene el array asociado a los valores de salida.
58 * \return El array asociado a los valores de salida.
59 * \warning Exclusivamente uso interno.
61 st_mysql_bind* getBindResults() throw() { return a_results; }
64 st_mysql_stmt* a_mysqlStmt;
66 st_mysql_bind* a_params;
67 st_mysql_bind* a_results;
69 Statement(Database& database, const char* name, const char* expression, const bool isCritical) :
70 dbms::Statement(database, name, expression, isCritical),
75 Statement(Database& database, const char* name, const std::string& expression, const bool isCritical) :
76 dbms::Statement(database, name, expression, isCritical),
81 st_mysql_bind* create(const int size, const char* whatis) throw(RuntimeException);
83 void prepare(dbms::Connection* connection) throw(RuntimeException, DatabaseException);
84 dbms::ResultCode execute(dbms::Connection* connection) throw(RuntimeException, DatabaseException);
85 bool fetch() throw(RuntimeException, DatabaseException);
87 friend class Database;