annotate C++/Driver.cpp @ 211:04aa866535fb

Merge
author David Demelier <markand@malikania.fr>
date Sat, 22 Mar 2014 22:02:24 +0100
parents cc1e5fe1ee2c
children 6c49e5e3ecc8
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?
189
cc1e5fe1ee2c Update drivers to style and using instead of typedefs
David Demelier <markand@malikania.fr>
parents: 184
diff changeset
48 if (row < 0 || row >= countRows()) {
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
49 oss << "Invalid row index " << row;
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
50 oss << ", expected [0.." << countRows() << "]";
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
51
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
52 throw Error(oss.str());
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
53 }
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 // Not found or bad column?
189
cc1e5fe1ee2c Update drivers to style and using instead of typedefs
David Demelier <markand@malikania.fr>
parents: 184
diff changeset
56 if (type(column) != wanted) {
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
57 oss << "Invalid or not found column `" << column << "'";
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 throw Error(oss.str());
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
60 }
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 }
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
62
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 Query::~Query()
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 }
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
66
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
67 template <>
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
68 bool Query::get(int row, const std::string &column)
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 {
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
70 assertRequest(row, column, ColumnType::Boolean);
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 return getBoolean(row, column);
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 }
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
74
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
75 template <>
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
76 Date Query::get(int row, const std::string &column)
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 {
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
78 assertRequest(row, column, ColumnType::Date);
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 return getDate(row, column);
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 }
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
82
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
83 template <>
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
84 double Query::get(int row, const std::string &column)
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 {
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
86 assertRequest(row, column, ColumnType::Double);
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 return getDouble(row, column);
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 }
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
90
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
91 template <>
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
92 int Query::get(int row, const std::string &column)
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 {
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
94 assertRequest(row, column, ColumnType::Integer);
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 return getInt(row, column);
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 }
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
98
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
99 template <>
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
100 std::string Query::get(int row, const std::string &column)
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 {
177
f0cca031bcce Improve Drivers
David Demelier <markand@malikania.fr>
parents: 172
diff changeset
102 assertRequest(row, column, ColumnType::String);
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 return getString(row, column);
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 }
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
106
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 /* --------------------------------------------------------
184
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
108 * Request class
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
109 * -------------------------------------------------------- */
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
110
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
111 Request::Request(const std::string &command)
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
112 : m_pos(0)
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
113 , m_params(0)
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
114 , m_command(command)
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
115 {
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
116 int i = -1;
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 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
119 ++ m_params;
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
120 }
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
121
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
122 Request::~Request()
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 }
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 void Request::assertCorrect()
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 if (m_params <= 0)
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
129 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
130 }
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
131
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
132 void Request::setValue(const std::string &value)
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 assertCorrect();
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 m_pos = m_command.find('#', m_pos);
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
137 m_command.replace(m_pos, 1, value);
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
138 m_pos += value.length();
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
139 m_params --;
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
140 }
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
141
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
142 template <>
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
143 void Request::bind(bool value)
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
144 {
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
145 setValue(bindBoolean(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
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
148 template <>
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
149 void Request::bind(Date value)
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
150 {
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
151 setValue(bindDate(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
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
154 template <>
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
155 void Request::bind(double value)
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
156 {
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
157 setValue(bindDouble(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
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
160 template <>
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
161 void Request::bind(int value)
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
162 {
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
163 setValue(bindInt(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
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
166 template <>
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
167 void Request::bind(std::string value)
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
168 {
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
169 setValue(bindString(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
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
172 template <>
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
173 void Request::bind(const char *value)
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
174 {
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
175 setValue(bindString(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
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
178 Request::operator std::string()
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 return m_command;
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
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
183 /* --------------------------------------------------------
171
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
184 * Driver class
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
185 * -------------------------------------------------------- */
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
186
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 Driver::Driver()
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 }
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 Driver::~Driver()
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 }
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 const std::string &Driver::getError() const
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 return m_error;
e47c4e9e3f9d Add SQL drivers
David Demelier <markand@malikania.fr>
parents:
diff changeset
198 }
184
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
199
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
200 Query::Ptr Driver::query(Request::Ptr request)
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 return query(static_cast<std::string>(*request));
4c746050969a Add support for request (PostgreSQL done)
David Demelier <markand@malikania.fr>
parents: 177
diff changeset
203 }