Loading...
Searching...
No Matches
PreparedQuery.h
Go to the documentation of this file.
1/* Copyright (C) 2008 National Institute For Space Research (INPE) - Brazil.
2
3 This file is part of the TerraLib - a Framework for building GIS enabled applications.
4
5 TerraLib is free software: you can redistribute it and/or modify
6 it under the terms of the GNU Lesser General Public License as published by
7 the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 TerraLib is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public License
16 along with TerraLib. See COPYING. If not, write to
17 TerraLib Team at <terralib-team@terralib.org>.
18 */
19
20/*!
21 \file terralib/postgis/PreparedQuery.h
22
23 \brief A class that implements a prepared query for PostgreSQL data access driver.
24*/
25
26#ifndef __TERRALIB_POSTGIS_INTERNAL_PREPAREDQUERY_H
27#define __TERRALIB_POSTGIS_INTERNAL_PREPAREDQUERY_H
28
29// TerraLib
30#include "../dataaccess/datasource/PreparedQuery.h"
31#include "Config.h"
32
33// Forward delcarations for libpq
34extern "C"
35{
36 struct pg_conn;
37 typedef struct pg_conn PGconn;
38
39 struct pg_result;
40 typedef struct pg_result PGresult;
41}
42
43namespace te
44{
45// Forward declarations
46 namespace da
47 {
48 class DataSetType;
49 }
50
51 namespace pgis
52 {
53// Forward declarations
54 class Transactor;
55
56 /*!
57 \class PreparedQuery
58
59 \brief A class that implements a prepared query for PostgreSQL data access driver.
60
61 \note Some general notes:
62 - bind doesn't need to set length for fixed-size types.
63
64 \note Review pending bind methods (raster, date, array, ...).
65
66 \note We need a numeric type by tomorrow!
67 */
69 {
70 public:
71
72 PreparedQuery(Transactor* t, const std::string& pqname);
73
75
76 std::string getName() const;
77
78 void prepare(const te::da::Query& query, const std::vector<te::dt::Property*>& paramTypes);
79
80 void prepare(const std::string& query, const std::vector<te::dt::Property*>& paramTypes);
81
82 void execute(PGconn* pgConn);
83
84 void execute();
85
88
89 void bind(int i, char value);
90
91 void bind(int i, unsigned char value);
92
93 void bind(int i, boost::int16_t value);
94
95 void bind(int i, boost::int32_t value);
96
97 void bind(int i, boost::int64_t value);
98
99 void bind(int i, bool value);
100
101 void bind(int i, float value);
102
103 void bind(int i, double value);
104
105 void bindNumeric(int i, const std::string& value);
106
107 void bind(int i, const std::string& value);
108
109 void bind(int i, const te::dt::ByteArray& value);
110
111 void bind(int i, const te::gm::Geometry& value);
112
113 void bind(int i, const te::rst::Raster& value);
114
115 void bind(int i, const te::dt::DateTime& value);
116
117 void bind(int i, const te::da::DataSet& value);
118
119 void bind(int i, const te::dt::AbstractData& ad);
120
122
123 /*!
124 \note PostgeSQL driver extended method.
125 */
126 void prepare(const std::string& query, const std::vector<int>& paramTypes);
127
128 /*!
129 \note PostgeSQL driver extended method.
130 */
131 void bind(const std::vector<std::size_t>& propertiesPos, std::size_t offset, te::da::DataSet* d);
132
133 /*!
134 \note PostgeSQL driver extended method.
135 */
136 void bind(const std::vector<std::size_t>& propertiesPos, te::da::DataSet* d);
137
138 /*!
139 \note PostgeSQL driver extended method.
140 */
142
143 /*!
144 \note PostgeSQL driver extended method.
145 */
146 void clear();
147
148 private:
149
155 std::size_t m_nparams;
156 std::string m_qname;
157 };
158
159 } // end namespace pgis
160} // end namespace te
161
162
163#endif // __TERRALIB_POSTGIS_INTERNAL_PREPAREDQUERY_H
A dataset is the unit of information manipulated by the data access module of TerraLib.
Definition: DataSet.h:114
A DataSourceTransactor can be viewed as a connection to the data source for reading/writing things in...
A class that model a prepared query.
Definition: PreparedQuery.h:70
A Query is independent from the data source language/dialect.
Definition: Query.h:47
A base class for values that can be retrieved from the data access module.
Definition: AbstractData.h:56
A class for representing binary data.
Definition: ByteArray.h:52
Geometry is the root class of the geometries hierarchy, it follows OGC and ISO standards.
Definition: Geometry.h:78
A class that implements a prepared query for PostgreSQL data access driver.
Definition: PreparedQuery.h:69
void bind(int i, const te::gm::Geometry &value)
Binds the i-th parameter of the query to a value.
void prepare(const std::string &query, const std::vector< te::dt::Property * > &paramTypes)
It prepares the query using native dialect.
void bind(int i, const te::da::DataSet &value)
Binds the i-th parameter of the query to a value.
void bind(int i, boost::int32_t value)
Binds the i-th parameter of the query to a value.
PreparedQuery(Transactor *t, const std::string &pqname)
te::da::DataSourceTransactor * getTransactor() const
It returns a pointer to the underlying data source transactor.
void prepare(const te::da::Query &query, const std::vector< te::dt::Property * > &paramTypes)
It prepares the query that may be used for commands that are used mutiple times (select,...
void bind(int i, boost::int16_t value)
Binds the i-th parameter of the query to a value.
void prepare(const std::string &query, const std::vector< int > &paramTypes)
void bind(const std::vector< std::size_t > &propertiesPos, te::da::DataSet *d)
void bind(int i, const te::dt::ByteArray &value)
Binds the i-th parameter of the query to a value.
void bindNumeric(int i, const std::string &value)
Binds the i-th parameter of the query to a value.
void bind(const std::vector< std::size_t > &propertiesPos, std::size_t offset, te::da::DataSet *d)
void bind(int i, bool value)
Binds the i-th parameter of the query to a value.
void bind(int i, char value)
Binds the i-th parameter of the query to a value.
te::da::DataSet * query(te::common::TraverseType travType=te::common::FORWARDONLY, te::common::AccessPolicy rwRole=te::common::RAccess)
void bind(int i, double value)
Binds the i-th parameter of the query to a value.
void bind(te::da::DataSet *d)
void bind(int i, unsigned char value)
Binds the i-th parameter of the query to a value.
void bind(int i, const te::rst::Raster &value)
Binds the i-th parameter of the query to a value.
void bind(int i, const te::dt::DateTime &value)
Binds the i-th parameter of the query to a value.
std::string getName() const
It returns the prepared query name.
~PreparedQuery()
Virtual destructor.
void bind(int i, const te::dt::AbstractData &ad)
Binds the i-th parameter of the query to a value.
void bind(int i, const std::string &value)
Binds the i-th parameter of the query to a value.
void bind(int i, float value)
Binds the i-th parameter of the query to a value.
void bind(int i, boost::int64_t value)
Binds the i-th parameter of the query to a value.
void execute(PGconn *pgConn)
The transactor class for the PostGIS driver.
Definition: Transactor.h:64
An abstract class for raster data strucutures.
Definition: Raster.h:72
TraverseType
A dataset can be traversed in two ways:
Definition: Enums.h:54
@ FORWARDONLY
Definition: Enums.h:55
AccessPolicy
Supported data access policies (can be used as bitfield).
Definition: Enums.h:41
@ RAccess
Definition: Enums.h:43
TerraLib.
struct pg_conn PGconn
Definition: Connection.h:45
struct pg_result PGresult
Definition: Connection.h:48
#define TEPGISEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:195
Proxy configuration file for TerraView (see terraview_config.h).