ANNA Suite  2020b
Multipurpose development suite for Telco applications
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Friends | List of all members
anna::dbms::Statement Class Referenceabstract

#include <Statement.hpp>

Inheritance diagram for anna::dbms::Statement:
Inheritance graph
[legend]
Collaboration diagram for anna::dbms::Statement:
Collaboration graph
[legend]

Public Types

typedef std::vector< InputBind * >::iterator input_iterator
 
typedef std::vector< OutputBind * >::iterator output_iterator
 

Public Member Functions

virtual ~Statement ()
 
const std::string & getName () const
 
const std::string & getExpression () const
 
bool isCritical () const
 
DatabasegetDatabase () const
 
void bindInput (const char *name, Data &data)
 
const dbms::OutputBindbindOutput (const char *name, Data &data)
 
void setRequiresCommit (const bool requiresCommit)
 
bool requiresCommit () const
 
input_iterator input_begin ()
 
input_iterator input_end ()
 
int input_size () const
 
output_iterator output_begin ()
 
output_iterator output_end ()
 
int output_size () const
 
virtual xml::NodeasXML (xml::Node *parent) const
 
virtual std::string asString () const
 
virtual bool fetch () noexcept(false)=0
 
- Public Member Functions inherited from anna::Mutex
 Mutex (const Mode::_v mode=Mode::Recursive)
 
virtual ~Mutex ()
 
virtual void lock () noexcept(false)
 
virtual void unlock ()
 
bool trylock () noexcept(false)
 
 operator const pthread_mutex_t * () const
 

Static Public Member Functions

static Datainput (input_iterator &ii)
 
static Dataoutput (output_iterator &ii)
 

Protected Member Functions

 Statement (Database &database, const char *name, const char *expression, const bool isCritical)
 
 Statement (Database &database, const char *name, const std::string &expression, const bool isCritical)
 
- Protected Member Functions inherited from anna::Safe
 Safe ()
 

Static Protected Member Functions

static InputBindinputBind (input_iterator &ii)
 
static OutputBindoutputBind (output_iterator &ii)
 

Friends

class Connection
 
class Database
 

Detailed Description

Clase que facilita la ejecucion de sentencias SQL.

Para obtener la instancia de un comando para una determinada base de datos habra que instanciar dicha base de datos e invocar al metodo Database::createStatement. Independientemente del tipo de comando particular que la base de datos retorne, debemos asignarlo a un puntero de tipo anna::dbms::Statement.

Member Typedef Documentation

◆ input_iterator

typedef std::vector<InputBind*>::iterator anna::dbms::Statement::input_iterator

◆ output_iterator

typedef std::vector<OutputBind*>::iterator anna::dbms::Statement::output_iterator

Constructor & Destructor Documentation

◆ ~Statement()

virtual anna::dbms::Statement::~Statement ( )
virtual

Destructor.

Reimplemented in anna::dbms::mysql::Statement, and anna::dbms::oracle::Statement.

◆ Statement() [1/2]

anna::dbms::Statement::Statement ( Database database,
const char *  name,
const char *  expression,
const bool  isCritical 
)
inlineprotected

Contructor.

Parameters
databaseBase de datos sobre la que se define la sentencia.
nameNombre logico de la sentencia.
expressionSentencia SQL asociada a esta clase.
isCriticalSi vale true indica que si la ejecucion de esta sentencia falla al desbloquear la conexion con la que ejecutamos esta sentencia se invocara a Connection::rollback, en otro caso aunque falle se invocara a Connection::commit. Solo aplicara en sentencias que no sean de seleccion.
224  :
225  a_database(database),
226  a_name(name),
227  a_expression(expression),
228  a_prepared(false),
229  a_isCritical(isCritical),
230  a_measureTiming("Timing", "us"),
231  a_requiresCommit(false) {
232  }
bool isCritical() const
Definition: Statement.hpp:72

◆ Statement() [2/2]

anna::dbms::Statement::Statement ( Database database,
const char *  name,
const std::string &  expression,
const bool  isCritical 
)
inlineprotected

Contructor.

Parameters
databaseBase de datos sobre la que se define la sentencia.
nameNombre logico de la sentencia.
expressionSentencia SQL asociada a esta clase.
isCriticalSi vale true indica que si la ejecucion de esta sentencia falla al desbloquear la conexion con la que ejecutamos esta sentencia se invocara a Connection::rollback, en otro caso aunque falle se invocara a Connection::commit. Solo aplicara en cuenta en sentencias que no sean de seleccion.
245  :
246  a_database(database),
247  a_name(name),
248  a_expression(expression),
249  a_prepared(false),
250  a_isCritical(isCritical),
251  a_measureTiming("Timing", "us"),
252  a_requiresCommit(false) {
253  }
bool isCritical() const
Definition: Statement.hpp:72

Member Function Documentation

◆ asString()

virtual std::string anna::dbms::Statement::asString ( ) const
virtual

Devuelve una cadena con la informacion referente a esta instancia.

Returns
Una cadena con la informacion referente a esta instancia.

◆ asXML()

virtual xml::Node* anna::dbms::Statement::asXML ( xml::Node parent) const
virtual

Devuelve un documento XML con la informacion referente a esta instancia.

Parameters
parentNodo XML del que debe colgar la informacion.
Returns
un documento XML con la informacion referente a esta instancia.

◆ bindInput()

void anna::dbms::Statement::bindInput ( const char *  name,
Data data 
)

Establece el parametro de entrada de la sentencia SQL.Cada una de las variables de entrada indicadas en esta sentencia SQL deberia tener un parametro de entrada asociado. La correspondencia entre esta variable y la sentencia SQL vendra dada por el orden de aparacion en la sentencia SQL y por el orden de definicion del parametro.

Por ejemplo la sentencia:

update tabla1 set xx = :unavariable where yy = :otravariable;

Cada una de las variables unavariable y otravariable debera tener asociado una variable de entrada. Primero debemos indicaremos la correspondiente a unavariable y luego la correspondiente a otravariable.

Parameters
nameNombre logico de esta variable. No tiene porque tener ninguna correspondencia con el nombre de la columna.
dataVariable que deseamos asociar como variable de entrada. La correspondencia entre esta y la sentencia SQL vendra dada por el orden de declaracion.

◆ bindOutput()

const dbms::OutputBind* anna::dbms::Statement::bindOutput ( const char *  name,
Data data 
)

Establece el parametro de salida de la sentencia SQL.Cada una de las variables de salida indicadas en esta sentencia SQL deberia tener un parametro de salida asociado. La correspondencia entre esta variable y la sentencia SQL vendra dada por el orden de aparacion en la sentencia SQL y por el orden de definicion del parametro.

Por ejemplo la sentencia:

select xx, yy from tabla1 where zz = :unavariable;

Cada una de las variables xx e yy debera tener asociado una variable de salida. Ademas la variable unavaraible debera tener asociada una variable de entrada.

Parameters
nameNombre logico de esta variable. No tiene porque tener ninguna correspondencia con el nombre de la columna.
dataVariable que deseamos asociar como variable de salida. La correspondencia entre esta y la sentencia SQL vendra dada por el orden de declaracion.
Returns
La instancia del dbms::OutputBind asociado al dato. nos permite grabar el contenido de los tipos de datos BLOB.
Warning
Solo las sentencias SQL del tipo select usan las variables de salida.

◆ fetch()

virtual bool anna::dbms::Statement::fetch ( )
pure virtualnoexcept

Transfiere la informacion de una fila de la sentencia SQL de seleccion a las variables de salida asociadas a la sentencia.

Returns
true si el registro ha sido transferido a las variables de salida o false si habiamos llegado al ultimo registro de la seleccion.

◆ getDatabase()

Database& anna::dbms::Statement::getDatabase ( ) const
inline

Devuelve la instancia de la base de datos asociada a esta sentencia.

Returns
La instancia de la base de datos asociada a la sentencia.
78 { return a_database; }

◆ getExpression()

const std::string& anna::dbms::Statement::getExpression ( ) const
inline

Devuelve la expresion SQL recibida en el constructor.

Returns
La expresion SQL recibida en el constructor.
63 { return a_expression; }

◆ getName()

const std::string& anna::dbms::Statement::getName ( ) const
inline

Devuelve el nombre logico de esta sentencia.

Returns
El nombre logico de esta sentencia.
57 { return a_name; }

◆ input()

static Data& anna::dbms::Statement::input ( input_iterator ii)
static

Devuelve la variable de entrada apuntada por el iterador recibido como parametro.

Returns
la variable de entrada apuntada por el iterador recibido como parametro.

◆ input_begin()

input_iterator anna::dbms::Statement::input_begin ( )
inline

Devuelve el iterador que apunta a la primera variable de entrada.

Returns
el iterador que apunta a la primera variable de entrada.
147 { return a_inputBinds.begin(); }

◆ input_end()

input_iterator anna::dbms::Statement::input_end ( )
inline

Devuelve el iterador que apunta a la primera variable de entrada.

Returns
el iterador que apunta a la primera variable de entrada.
153 { return a_inputBinds.end(); }

◆ input_size()

int anna::dbms::Statement::input_size ( ) const
inline

Devuelve el numero de variables de entrada asociado a esta sentencia SQL.

Returns
el numero de variables de entrada asociado a esta sentencia SQL.
159 { return a_inputBinds.size(); }

◆ inputBind()

static InputBind* anna::dbms::Statement::inputBind ( input_iterator ii)
inlinestaticprotected

Devuelve la referencia de entrada apuntada por el iterador recibido como parametro.

Returns
la referencia de entrada apuntada por el iterador recibido como parametro.
259 { return *ii; }

◆ isCritical()

bool anna::dbms::Statement::isCritical ( ) const
inline

Devuelve el indicador de criticidad, si vale true indica que si la ejecucion de esta sentencia falla al desbloquear la conexion con la que ejecutamos esta sentencia se invocara a Connection::rollback, en otro caso aunque falle se invocara a Connection::commit. Solo aplicara en sentencias que no sean de seleccion.

Returns
El indicador de criticidad de esta sentencia.
72 { return a_isCritical; }

◆ output()

static Data& anna::dbms::Statement::output ( output_iterator ii)
static

Devuelve la variable de salida apuntada por el iterador recibido como parametro.

Returns
la variable de salida apuntada por el iterador recibido como parametro.

◆ output_begin()

output_iterator anna::dbms::Statement::output_begin ( )
inline

Devuelve el iterador que apunta a la primera variable de salida.

Returns
el iterador que apunta a la primera variable de salida.
165 { return a_outputBinds.begin(); }

◆ output_end()

output_iterator anna::dbms::Statement::output_end ( )
inline

Devuelve el iterador que apunta a la primera variable de salida.

Returns
el iterador que apunta a la primera variable de salida.
171 { return a_outputBinds.end(); }

◆ output_size()

int anna::dbms::Statement::output_size ( ) const
inline

Devuelve el numero de variables de entrada asociado a esta sentencia SQL.

Returns
el numero de variables de entrada asociado a esta sentencia SQL.
177 { return a_outputBinds.size(); }

◆ outputBind()

static OutputBind* anna::dbms::Statement::outputBind ( output_iterator ii)
inlinestaticprotected

Devuelve la referencia de salida apuntada por el iterador recibido como parametro.

Returns
la referencia de salida apuntada por el iterador recibido como parametro.
265 { return *ii; }

◆ requiresCommit()

bool anna::dbms::Statement::requiresCommit ( ) const
inline

Devuelve true si la sentencia requiere la invocacion a commit o rollback tras su ejecucion. Puede devolver true por tratarse de una sentencia que no tiene variables de salida (insert, update o delete) o bien porque se haya activado el indicador correspondiente mediante la llamada setRequiresCommit

141 { return (a_requiresCommit == true) || (a_outputBinds.empty() == true); }

◆ setRequiresCommit()

void anna::dbms::Statement::setRequiresCommit ( const bool  requiresCommit)
inline

Establece el valor del indicador que activa/desactiva la necesidad de invocar al commit y/o rollback despues de ejecutar esta sentencia.

133 { a_requiresCommit = requiresCommit; }
bool requiresCommit() const
Definition: Statement.hpp:141

Friends And Related Function Documentation

◆ Connection

friend class Connection
friend

◆ Database

friend class Database
friend

The documentation for this class was generated from the following file: