Mercurial > code
annotate C++/Driver.h @ 190:d263f85f43a4
Update escape string for PostgreSQL strings
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 27 Nov 2013 10:25:58 +0100 |
parents | cc1e5fe1ee2c |
children | 6c49e5e3ecc8 |
rev | line source |
---|---|
171 | 1 /* |
2 * Driver.h -- generic SQL driver access | |
3 * | |
4 * Copyright (c) 2013, David Demelier <markand@malikania.fr> | |
5 * | |
6 * Permission to use, copy, modify, and/or distribute this software for any | |
7 * purpose with or without fee is hereby granted, provided that the above | |
8 * copyright notice and this permission notice appear in all copies. | |
9 * | |
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 */ | |
18 | |
19 #ifndef _DRIVER_H_ | |
20 #define _DRIVER_H_ | |
21 | |
22 #include <iostream> | |
23 #include <memory> | |
24 #include <string> | |
184
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
25 #include <unordered_map> |
171 | 26 |
181 | 27 #include "Date.h" |
171 | 28 |
29 /** | |
30 * @enum ColumnType | |
31 * @brief The column type request | |
32 * | |
33 * Used for the drivers. | |
34 */ | |
35 enum class ColumnType { | |
177 | 36 Invalid, //! not found |
171 | 37 Boolean, //! bool or 0 / 1 |
38 Date, //! date see Common/Date.h | |
39 Double, //! double | |
40 Integer, //! 32 or 64 bit int | |
41 String, //! varchar to std::string | |
42 }; | |
43 | |
44 /** | |
45 * @class Query | |
46 * @brief Class for querying the database | |
177 | 47 * |
48 * That class is returned when a SQL query succeed. It can retrieve the | |
49 * number of rows, columns and retrieve the results independantly from the | |
50 * driver. | |
51 * | |
52 * @see Driver::query | |
171 | 53 */ |
54 class Query { | |
177 | 55 public: |
189
cc1e5fe1ee2c
Update drivers to style and using instead of typedefs
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
56 using Ptr = std::shared_ptr<Query>; |
177 | 57 |
58 /** | |
59 * @class Error | |
60 * @brief Query exception on query error | |
61 */ | |
189
cc1e5fe1ee2c
Update drivers to style and using instead of typedefs
David Demelier <markand@malikania.fr>
parents:
184
diff
changeset
|
62 class Error : public std::exception { |
177 | 63 private: |
64 std::string m_error; | |
65 | |
66 public: | |
67 Error(const std::string &error); | |
68 | |
69 virtual const char *what() const throw(); | |
70 }; | |
71 | |
171 | 72 private: |
73 /** | |
74 * Check if the request is valid and throws an exception | |
75 * on error. | |
76 * | |
77 * @param row the row number | |
78 * @param column the column name | |
177 | 79 * @param type |
80 * @throw Error on error | |
171 | 81 */ |
177 | 82 void assertRequest(int row, const std::string &column, ColumnType type); |
171 | 83 |
84 protected: | |
85 /** | |
86 * Get a bool. | |
87 * | |
88 * @param row the row number | |
89 * @param column the column | |
90 * @return the value | |
91 */ | |
177 | 92 virtual bool getBoolean(int row, const std::string &column) = 0; |
171 | 93 |
94 /** | |
95 * Get a Date. | |
96 * | |
97 * @param row the row number | |
98 * @param column the column | |
99 * @return the value | |
100 */ | |
177 | 101 virtual Date getDate(int row, const std::string &column) = 0; |
171 | 102 |
103 /** | |
104 * Get a double. | |
105 * | |
106 * @param row the row number | |
107 * @param column the column | |
108 * @return the value | |
109 */ | |
177 | 110 virtual double getDouble(int row, const std::string &column) = 0; |
171 | 111 |
112 /** | |
113 * Get a integer. | |
114 * | |
115 * @param row the row number | |
116 * @param column the column | |
117 * @return the value | |
118 */ | |
177 | 119 virtual int getInt(int row, const std::string &column) = 0; |
171 | 120 |
121 /** | |
122 * Get a string. | |
123 * | |
124 * @param row the row number | |
125 * @param column the column | |
126 * @return the value | |
127 */ | |
177 | 128 virtual std::string getString(int row, const std::string &column) = 0; |
171 | 129 |
130 public: | |
131 /** | |
177 | 132 * Default destructor. |
171 | 133 */ |
177 | 134 virtual ~Query(); |
171 | 135 |
136 /** | |
177 | 137 * Get a variable from a row and column. |
171 | 138 * |
177 | 139 * Specialization available: |
140 * - bool | |
141 * - Date | |
142 * - double | |
143 * - int | |
144 * - std::string | |
145 * | |
146 * @param row the row number (starts from 0) | |
147 * @param column the the column name | |
148 * @return the value | |
190
d263f85f43a4
Update escape string for PostgreSQL strings
David Demelier <markand@malikania.fr>
parents:
189
diff
changeset
|
149 * @throw Query::Error on error |
171 | 150 */ |
177 | 151 template <class T> |
152 T get(int row, const std::string &column); | |
171 | 153 |
154 /** | |
177 | 155 * Returns the type of a named column. |
171 | 156 * |
177 | 157 * @param column the column name |
158 * @return the type | |
171 | 159 */ |
177 | 160 virtual ColumnType type(const std::string &column) const = 0; |
171 | 161 |
162 /** | |
163 * Tells how many rows has been fetched. | |
164 * | |
165 * @return the number of rows | |
166 */ | |
177 | 167 virtual int countRows() = 0; |
171 | 168 |
169 /** | |
170 * Tells how many number of columns are present for each | |
171 * row. | |
172 * | |
173 * @return the number of columns | |
174 */ | |
177 | 175 virtual int countColumns() = 0; |
171 | 176 |
177 /** | |
178 * Tells if the column is null or not. | |
179 * | |
180 * @param row the row number | |
181 * @param column the column | |
182 * @return an true if null | |
183 */ | |
184 virtual bool isNull(int row, const std::string &column) = 0; | |
185 | |
186 /** | |
187 * Dump all rows and columns. | |
188 */ | |
177 | 189 virtual void dump() = 0; |
171 | 190 }; |
191 | |
177 | 192 /** |
184
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
193 * @class Request |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
194 * @brief A secure helper for creating requests |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
195 * |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
196 * This helps creating class with SQL injection security and such. |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
197 */ |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
198 class Request { |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
199 public: |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
200 friend class Driver; |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
201 |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
202 using Ptr = std::shared_ptr<Request>; |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
203 |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
204 private: |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
205 size_t m_pos; |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
206 int m_params; |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
207 std::string m_command; |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
208 |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
209 void assertCorrect(); |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
210 |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
211 void setValue(const std::string &value); |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
212 |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
213 protected: |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
214 /** |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
215 * Bind a boolean. |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
216 * |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
217 * @param value the boolean |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
218 * @return the string to use |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
219 */ |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
220 virtual std::string bindBoolean(bool value) = 0; |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
221 |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
222 /** |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
223 * Bind a date. |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
224 * |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
225 * @param value the date |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
226 * @return the string to use |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
227 */ |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
228 virtual std::string bindDate(Date value) = 0; |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
229 |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
230 /** |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
231 * Bind a double. |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
232 * |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
233 * @param value the double |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
234 * @return the string to use |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
235 */ |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
236 virtual std::string bindDouble(double value) = 0; |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
237 |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
238 /** |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
239 * Bind an integer. |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
240 * |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
241 * @param value the integer |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
242 * @return the string to use |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
243 */ |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
244 virtual std::string bindInt(int value) = 0; |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
245 |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
246 /** |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
247 * Bind a string. |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
248 * |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
249 * @param value the string |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
250 * @return the string to use |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
251 */ |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
252 virtual std::string bindString(std::string value) = 0; |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
253 |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
254 /** |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
255 * Default constructor with SQL command. |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
256 * |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
257 * @param command the SQL command |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
258 */ |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
259 Request(const std::string &command); |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
260 |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
261 public: |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
262 /** |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
263 * Default destructor. |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
264 */ |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
265 virtual ~Request(); |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
266 |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
267 /** |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
268 * Bind a value. |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
269 * |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
270 * @param value the value |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
271 */ |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
272 template <typename T> |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
273 void bind(T value); |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
274 |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
275 /** |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
276 * Convert the request to string. |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
277 * |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
278 * @return the request as a string |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
279 */ |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
280 operator std::string(); |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
281 }; |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
282 |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
283 /** |
177 | 284 * @class Driver |
285 * @brief A generic SQL driver | |
286 * | |
287 * This class is used to connect to a database and execute SQL queries. It | |
288 * does not include any DBMS code and just call virtual functions for | |
289 * a simpler integration of new DBMS drivers. | |
290 */ | |
291 class Driver : public std::enable_shared_from_this<Driver> { | |
171 | 292 protected: |
293 std::string m_error; | |
294 | |
177 | 295 /** |
296 * Default constructor. Should not be used. | |
297 * | |
298 * @see Driver::create | |
299 */ | |
300 Driver(); | |
301 | |
171 | 302 public: |
184
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
303 using Params = std::unordered_map<std::string, std::string>; |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
304 using Ptr = std::shared_ptr<Driver>; |
171 | 305 |
172
a61cddaf7547
Rename Driver postgres
David Demelier <markand@malikania.fr>
parents:
171
diff
changeset
|
306 /** |
177 | 307 * Create a new Driver object, some queries need to do additional |
308 * internal requests so it's easier to use shared_ptr. | |
309 * | |
310 * @return a shared_ptr | |
172
a61cddaf7547
Rename Driver postgres
David Demelier <markand@malikania.fr>
parents:
171
diff
changeset
|
311 */ |
177 | 312 template <class T> |
313 static Ptr create() | |
314 { | |
315 T *t = new T(); | |
316 | |
317 return std::shared_ptr<T>(t); | |
318 } | |
172
a61cddaf7547
Rename Driver postgres
David Demelier <markand@malikania.fr>
parents:
171
diff
changeset
|
319 |
a61cddaf7547
Rename Driver postgres
David Demelier <markand@malikania.fr>
parents:
171
diff
changeset
|
320 /** |
a61cddaf7547
Rename Driver postgres
David Demelier <markand@malikania.fr>
parents:
171
diff
changeset
|
321 * Virtual destructor. |
a61cddaf7547
Rename Driver postgres
David Demelier <markand@malikania.fr>
parents:
171
diff
changeset
|
322 */ |
171 | 323 virtual ~Driver(); |
324 | |
325 /** | |
326 * Get the error. | |
327 * | |
328 * @return the error | |
329 */ | |
177 | 330 const std::string &getError() const; |
171 | 331 |
332 /** | |
184
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
333 * Wrapper for std::string variant. |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
334 * |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
335 * @param request the request to use |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
336 * @return a result |
190
d263f85f43a4
Update escape string for PostgreSQL strings
David Demelier <markand@malikania.fr>
parents:
189
diff
changeset
|
337 * @throw Query::Error on failure |
184
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
338 */ |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
339 Query::Ptr query(Request::Ptr request); |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
340 |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
341 /** |
171 | 342 * Create a synchronous connection, it waits and block until |
343 * the connection is made up to a specified timeout max. | |
344 * | |
345 * @param params a list of parameters. | |
346 */ | |
347 virtual bool connect(const Params ¶ms) = 0; | |
348 | |
349 /** | |
184
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
350 * Prepare a request with the specified SQL command. |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
351 * |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
352 * @param command the SQL command to parse and bind |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
353 * @return a request to use with query |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
354 * @see query |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
355 */ |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
356 virtual Request::Ptr prepare(const std::string &command) = 0; |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
357 |
4c746050969a
Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents:
181
diff
changeset
|
358 /** |
171 | 359 * Execute a query. |
360 * | |
361 * @param query the SQL command | |
362 * @return a result | |
190
d263f85f43a4
Update escape string for PostgreSQL strings
David Demelier <markand@malikania.fr>
parents:
189
diff
changeset
|
363 * @throw Query::Error on failure |
171 | 364 */ |
177 | 365 virtual Query::Ptr query(const std::string &command) = 0; |
171 | 366 |
367 /** | |
368 * Get the driver connection description. | |
369 * | |
370 * @return the description | |
371 */ | |
372 virtual std::string description() const = 0; | |
177 | 373 |
374 /** | |
375 * Get the driver version as a string. | |
376 * | |
377 * @return the version | |
378 */ | |
379 virtual std::string version() const = 0; | |
171 | 380 }; |
381 | |
382 #endif // !_DRIVER_H_ |