annotate C++/Driver.cpp @ 184:4c746050969a

Add support for request (PostgreSQL done) Task: #199
author David Demelier <markand@malikania.fr>
date Mon, 11 Nov 2013 18:05:47 +0100
parents f0cca031bcce
children cc1e5fe1ee2c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * Driver.cpp -- generic SQL driver access
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2013, David Demelier <markand@malikania.fr>
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <map>
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #include <string>
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 #include <sstream>
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
22
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #include "Driver.h"
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 /* ---------------------------------------------------------
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
26 * Query::Error class
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
27 * --------------------------------------------------------- */
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
28
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
29 Query::Error::Error(const std::string &error)
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
30 : m_error(error)
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
31 {
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
32 }
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
33
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
34 const char *Query::Error::Error::what() const throw()
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
35 {
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
36 return m_error.c_str();
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
37 }
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
38
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
39 /* ---------------------------------------------------------
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 * Query class
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 * ---------------------------------------------------------*/
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
42
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
43 void Query::assertRequest(int row, const std::string &column, ColumnType wanted)
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 {
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
45 std::ostringstream oss;
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
46
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
47 // Out of bounds?
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
48 if (row < 0 || row >= countRows())
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
49 {
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
50 oss << "Invalid row index " << row;
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
51 oss << ", expected [0.." << countRows() << "]";
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
52
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
53 throw Error(oss.str());
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
54 }
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
55
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
56 // Not found or bad column?
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
57 if (type(column) != wanted)
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
58 {
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
59 oss << "Invalid or not found column `" << column << "'";
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
60
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
61 throw Error(oss.str());
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
62 }
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 }
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
64
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 Query::~Query()
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 {
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 }
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
68
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
69 template <>
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
70 bool Query::get(int row, const std::string &column)
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 {
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
72 assertRequest(row, column, ColumnType::Boolean);
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
73
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
74 return getBoolean(row, column);
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 }
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
76
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
77 template <>
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
78 Date Query::get(int row, const std::string &column)
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 {
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
80 assertRequest(row, column, ColumnType::Date);
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
81
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
82 return getDate(row, column);
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 }
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
84
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
85 template <>
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
86 double Query::get(int row, const std::string &column)
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 {
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
88 assertRequest(row, column, ColumnType::Double);
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
89
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
90 return getDouble(row, column);
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 }
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
92
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
93 template <>
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
94 int Query::get(int row, const std::string &column)
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 {
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
96 assertRequest(row, column, ColumnType::Integer);
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
97
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
98 return getInt(row, column);
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 }
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
100
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
101 template <>
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
102 std::string Query::get(int row, const std::string &column)
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 {
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
104 assertRequest(row, column, ColumnType::String);
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
105
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
106 return getString(row, column);
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 }
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
108
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 /* --------------------------------------------------------
184
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
110 * Request class
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
111 * -------------------------------------------------------- */
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
112
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
113 Request::Request(const std::string &command)
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
114 : m_pos(0)
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
115 , m_params(0)
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
116 , m_command(command)
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
117 {
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
118 int i = -1;
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
119
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
120 while ((i = command.find('#', i + 1)) != std::string::npos)
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
121 ++ m_params;
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
122 }
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
123
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
124 Request::~Request()
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
125 {
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
126 }
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
127
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
128 void Request::assertCorrect()
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
129 {
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
130 if (m_params <= 0)
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
131 throw std::runtime_error("no more arguments to set");
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
132 }
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
133
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
134 void Request::setValue(const std::string &value)
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
135 {
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
136 assertCorrect();
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
137
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
138 m_pos = m_command.find('#', m_pos);
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
139 m_command.replace(m_pos, 1, value);
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
140 m_pos += value.length();
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
141 m_params --;
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
142 }
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
143
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
144 template <>
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
145 void Request::bind(bool value)
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
146 {
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
147 setValue(bindBoolean(value));
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
148 }
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
149
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
150 template <>
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
151 void Request::bind(Date value)
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
152 {
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
153 setValue(bindDate(value));
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
154 }
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
155
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
156 template <>
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
157 void Request::bind(double value)
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
158 {
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
159 setValue(bindDouble(value));
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
160 }
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
161
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
162 template <>
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
163 void Request::bind(int value)
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
164 {
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
165 setValue(bindInt(value));
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
166 }
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
167
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
168 template <>
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
169 void Request::bind(std::string value)
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
170 {
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
171 setValue(bindString(value));
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
172 }
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
173
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
174 template <>
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
175 void Request::bind(const char *value)
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
176 {
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
177 setValue(bindString(value));
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
178 }
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
179
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
180 Request::operator std::string()
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
181 {
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
182 return m_command;
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
183 }
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
184
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
185 /* --------------------------------------------------------
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
186 * Driver class
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 * -------------------------------------------------------- */
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
188
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
189 Driver::Driver()
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
190 {
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
191 }
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
192
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
193 Driver::~Driver()
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
194 {
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
195 }
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
196
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
197 const std::string &Driver::getError() const
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
198 {
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
199 return m_error;
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
200 }
184
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
201
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
202 Query::Ptr Driver::query(Request::Ptr request)
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
203 {
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
204 return query(static_cast<std::string>(*request));
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
205 }