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_ResultCode_hpp
10 #define anna_dbms_ResultCode_hpp
18 #include <anna/config/defines.hpp>
19 #include <anna/core/RuntimeException.hpp>
26 Clase para acceder a la informacion devuelta por el gestor de base de datos
27 referente al ultimo comando realizado.
33 \warning Antes de usarse debe asignarse a algun otro ResultCode obtenido mediante la invocacion
34 a anna::dbms::Connection::execute.
36 ResultCode() : a_errorText(NULL), a_errorDecoder(NULL), a_errorCode(0) {;}
40 @param other Instancia de la que copiar los datos.
42 ResultCode(const ResultCode& other) :
44 a_errorDecoder(other.a_errorDecoder) {
45 set(other.a_errorCode, other.a_errorText);
51 virtual ~ResultCode() { if(a_errorText != NULL) free(a_errorText); }
54 Devuelve el codigo de error del ultimo comando ejecutado contra la base de datos.
55 @return El codigo de error del ultimo comando ejecutado contra la base de datos.
57 int getErrorCode() const { return a_errorCode; }
60 Devuelve el texto del error del ultimo comando ejecutado contra la base de datos.
61 @return El texto del error del ultimo comando ejecutado contra la base de datos.
63 const char* getErrorText() const { return (a_errorText != NULL) ? a_errorText : ""; }
68 @param resultCode Instancia a copiar.
69 @return Una instancia de si mismo.
71 ResultCode& operator = (const ResultCode& resultCode)
73 if(this != &resultCode) {
74 a_errorDecoder = resultCode.a_errorDecoder;
75 set(resultCode.a_errorCode, resultCode.a_errorText);
82 Devuelve \em true si las condiciones de busqueda de la ultimo operacion
83 no han sido satisfechas por ningun registro o \em false en otro caso.
84 @return \em true si las condiciones de busqueda de la ultimo operacion
85 no han sido satisfechas por ningun registro o \em false en otro caso.
87 bool notFound() const noexcept(false);
90 Devuelve \em true si la ultima operacion solicitada fue realizada correctamente
91 o \em false en otro caso.
92 @return \em true si la ultima operacion solicitada fue realizada correctamente
93 o \em false en otro caso.
95 bool successful() const noexcept(false);
98 Devuelve \em true Si el registro obtenenido en una sentencia de seleccion con indicador
99 de modo exclusivo ha sido bloqueada previamente por otro proceso y/o contexto de base de
100 datos o \em false en otro caso.
101 @return \em true Si el registro obtenenido en una sentencia de seleccion con indicador
102 de modo exclusivo ha sido bloqueada previamente por otro proceso y/o contexto de base de
103 datos o \em false en otro caso.
105 bool locked() const noexcept(false);
108 Devuelve \em true si se perdio la conexion la base de datos o \em false en otro caso.
109 @return \em true si se perdio la conexion la base de datos o \em false en otro caso.
111 bool lostConnection() const noexcept(false);
114 Devuelve una cadena con la informacion sobre esta clase.
115 \return Una cadena con la informacion sobre esta clase.
117 std::string asString() const ;
120 static const int MaxErrorLen = 512;
123 Decodificador del error devuelto por el RDBMS concreto que estemos usando.
124 \warning Exclusivamente uso interno.
128 virtual bool notFound(const int errorCode) const = 0;
129 virtual bool successful(const int errorCode) const = 0;
130 virtual bool locked(const int errorCode) const = 0;
131 virtual bool lostConnection(const int errorCode) const = 0;
137 \param errorCode Codigo de error asociado a la ultima operacion realizada contra la base de datos.
138 \param errorText Texto asociado al error de ultima operacion realizada contra la base de datos. Puede ser
139 NULL si no hay ningun texto de error asociado al codigo recibido.
140 \param errorDecoder Decofidicador de errores.
142 ResultCode(const int errorCode, const char* errorText, const ErrorDecoder* errorDecoder) :
144 a_errorDecoder(errorDecoder) {
145 set(errorCode, errorText);
149 Establece el contenido de esta clase.
151 \param errorCode Codigo de error asociado a la ultima operacion realizada contra la base de datos.
152 \param errorText Texto asociado al error de ultima operacion realizada contra la base de datos.
154 void set(const int errorCode, const char* errorText)
156 a_errorCode = errorCode;
163 const ErrorDecoder* a_errorDecoder;
165 void copy(const char* text) ;