source: observatorio/simulacion/DB/dbQuery.H

simulacion
Last change on this file was 209ac10, checked in by Alejandro <amujica@…>, 10 years ago

Cambio de rama

  • Property mode set to 100644
File size: 3.2 KB
Line 
1/*
2  Copyright (C) 2012
3  Alejandro Mujica (amujica@cenditel.gob.ve)
4  Erwin Paredes (eparedes@cenditel.gob.ve)
5  José Ruiz (jruiz@cenditel.gob.ve)
6  Rodolfo Rangel (rrangel@cenditel.gob.ve)
7  Julie Vera (jvera@cenditel.gob.ve)
8 
9  CENDITEL Fundación Centro Nacional de Desarrollo e Investigación en
10  Tecnologías Libres
11 
12  Este programa es software libre; Usted puede usarlo bajo los términos de la
13  licencia de software GPL versión 2.0 de la Free Software Foundation.
14 
15  Este programa se distribuye con la esperanza de que sea útil, pero SIN
16  NINGUNA GARANTÍA; tampoco las implícitas garantías de MERCANTILIDAD o
17  ADECUACIÓN A UN PROPÓSITO PARTICULAR.
18  Consulte la licencia GPL para más detalles. Usted debe recibir una copia
19  de la GPL junto con este programa; si no, escriba a la Free Software
20  Foundation Inc. 51 Franklin Street,5 Piso, Boston, MA 02110-1301, USA.
21*/
22
23/*
24  Autor:             Alejandro J. Mujica
25  Fecha de creación: 26/07/2013
26  Este archivo contiene la definición de la clase DBQuery.
27*/
28
29# ifndef DB_QUERY_H
30# define DB_QUERY_H
31
32# include <dbConnection.H>
33
34/** Abstrae un objeto de consulta a la base de datos en PostgreSQL
35 *
36 *  Permite ejecutar consultas e iterar sobre el resultado.
37 *
38 *  @author Alejandro J. Mujica (amujica at cenditel dot gob dot ve)
39 */
40class DBQuery {
41
42    DBConnection & connection;
43
44    PGresult * pgresult;
45
46    size_t numCols;
47
48    size_t numRows;
49
50    size_t currRow;
51
52public:
53    DBQuery(DBConnection &);
54
55    ~DBQuery();
56
57    /** Ejecuta un comando SQL.
58     *
59     *  @param strQuery cadena de caracteres con el comando SQL.
60     *  @return true si la consulta de ejecuta correctamente, false si ocurre
61     *          algún error.
62     */
63    bool exec(const std::string & strQuery);
64
65    /// Limpia el resultado de una consulta.
66    void clear();
67
68    /// Ubica al iterador del resultado en la tupla inicial.
69    void reset();
70
71    /** Mueve el iterador del resultado a la siguiente tupla.
72     *
73     *  @return true si se pudo mover a una tupla siguiente, false si no hay más
74     *          tuplas para moverse.
75     */
76    bool next();
77
78    /** Indica si hay resultado de una consulta.
79     *
80     *  @retun true si hay tuplas, false si no hay.
81     */
82    bool hasResult() const;
83
84    /** Consulta el valor de una columna dada (por número) en la tupla actual.
85     *
86     *  @param colNumber número de columna que se va a consultar.
87     *  @return cadena de caracteres con el valor de la columna dada.
88     *  @throw domain_error si no hay tuplas en el resultado.
89     *  @throw overflow_error si el iterador pasó de la última tupla o si se
90     *         consulta un número de columna no existente.
91     */
92    char * getValue(const size_t & colNumber);
93
94    /** Consulta el valor de una columna dada (por nombre) en la tupla actual.
95     *
96     *  @param colName nombre de columna que se va a consultar.
97     *  @return cadena de caracteres con el valor de la columna dada.
98     *  @throw domain_error si no hay tuplas en el resultado.
99     *  @throw overflow_error si el iterador pasó de la última tupla o si se
100     *         consulta un nombre de columna no existente.
101     */
102    char * getValue(const std::string & colName);
103};
104
105# endif // DB_QUERY_H
106
Note: See TracBrowser for help on using the repository browser.