4
* Copyright (C) 2009 Tim Marston <tim@ed.am>
4
* Copyright (C) 2009 Tim Marston <edam@waxworlds.org>
6
6
* This file is part of sqlite3cc (hereafter referred to as "this program").
7
* See http://ed.am/dev/sqlite3cc for more information.
9
* This program is free software: you can redistribute it and/or modify it under
10
* the terms of the GNU Lesser General Public License as published by the Free
11
* Software Foundation, either version 3 of the License, or (at your option) any
14
* This program is distributed in the hope that it will be useful, but WITHOUT
15
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
7
* See http://www.waxworlds.org/edam/software/sqlite3cc for more information.
9
* This program is free software: you can redistribute it and/or modify
10
* it under the terms of the GNU Lesser General Public License as published
11
* by the Free Software Foundation, either version 3 of the License, or
12
* (at your option) any later version.
14
* This program is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
* GNU Lesser General Public License for more details.
19
19
* You should have received a copy of the GNU Lesser General Public License
20
20
* along with this program. If not, see <http://www.gnu.org/licenses/>.
51
* The statement class represents an SQL statement. It is the base class for
51
* The statement class represents an SQL statement. It is the base class for
52
52
* both the command and the query classes, which should be used for those
53
* purposes. The basic_statement class its self has protected instantiation.
53
* purposes. The basic_statement class its self has protected instantiation.
55
55
class basic_statement
57
private boost::noncopyable
57
59
//______________________________________________________________________________
94
93
const std::string &sql );
97
* Reset the statement, ready to re-execute it. This does not clear any of
96
* Reset the statement, ready to re-execute it. This does not clear any of
98
97
* the values bound to the statement.
100
98
* @returns an sqlite error code
101
99
* @see sqlite3_reset()
106
104
* Clears the values bound to a statement to NULL.
108
105
* @returns an sqlite error code
109
106
* @see sqlite3_clear_bindings()
111
108
int clear_bindings();
114
* Bind a value to the SQL statement via it's index. This template will
115
* take a variety of data types and bind them as text. This is how sqlite
111
* Bind a value to the SQL statement via it's index. This template will take
112
* a variety of data types and bind them as text. This is how sqlite
116
113
* internally stores the data anyway, so always binding as text just means
117
114
* we do the conversion instead of sqlite and is no less efficient.
119
115
* @param index the index of the parameter to bind to
120
116
* @param value the value to bind
121
117
* @returns an sqlite error code
135
131
* Bind a string value to the SQL statement via it's index where the value
136
* of that string will not change for the duration of the statement. This
137
* is more optimal because sqlite will not have to take it's own copy of the
132
* of that string will not change for the duration of the statement. This is
133
* more optimal because sqlite will not have to take it's own copy of the
140
135
* @param index the index of the parameter to bind to
141
136
* @param value the invariant string value
142
137
* @param value_length the length of the string including zero-terminator
152
147
* Bind a string value to the SQL statement via it's index where the value
153
* of that string will not change for the duration of the statement. This
154
* is more optimal because sqlite will not have to take it's own copy of the
148
* of that string will not change for the duration of the statement. This is
149
* more optimal because sqlite will not have to take it's own copy of the
157
151
* @param index the index of the parameter to bind to
158
152
* @param value the invariant string value
159
153
* @returns an sqlite error code
167
161
* Bind a string value to the SQL statement via it's index where the value
168
* of that string will not change for the duration of the statement. This
169
* is more optimal because sqlite will not have to take it's own copy of the
162
* of that string will not change for the duration of the statement. This is
163
* more optimal because sqlite will not have to take it's own copy of the
172
165
* @param index the index of the parameter to bind to
173
166
* @param value the invariant string value
174
167
* @returns an sqlite error code
189
181
unsigned int index );
192
* Bind a value to the SQL statement via a named parameter. This template
193
* will take a variety of data types and bind them as text. This is how
184
* Bind a value to the SQL statement via a named parameter. This template
185
* will take a variety of data types and bind them as text. This is how
194
186
* sqlite internally stores the data anyway, so always binding as text just
195
187
* means we do the conversion instead of sqlite and is no less efficient.
197
188
* @param name the named parameter to bind to
198
189
* @param value the value to bind
199
190
* @returns an sqlite error code
211
202
* Bind a string value to the SQL statement via a named parameter where the
212
* string value will not change for the duration of the statement. This
203
* string value will not change for the duration of the statement. This
213
204
* prevents sqlite from taking its own copy of the string.
215
205
* @param name the named parameter to bind to
216
206
* @param value the invariant string value
217
207
* @param value_length the length of the string including zero-terminator
227
217
* Bind a string value to the SQL statement via a named parameter where the
228
* string value will not change for the duration of the statement. This
218
* string value will not change for the duration of the statement. This
229
219
* prevents a copy of the string being taken.
231
220
* @param name the named parameter to bind to
232
221
* @param value the invariant string value
233
222
* @returns an sqlite error code
241
230
* Bind a string value to the SQL statement via a named parameter where the
242
* string value will not change for the duration of the statement. This
231
* string value will not change for the duration of the statement. This
243
232
* prevents a copy of the string being taken.
245
233
* @param name the named parameter to bind to
246
234
* @param value the invariant string value
247
235
* @returns an sqlite error code
265
252
* Stream operator is used to bind values to parameters automatically, in
266
* ascending order. In addition, the null and set_index() auto-binding
253
* ascending order. In addition, the null and set_index() auto-binding
267
254
* manipulators can be used.
269
255
* @param value a value to bind
271
257
template< class T >
288
274
* Finalise an SQL statement.
290
275
* @returns an sqlite error code
291
276
* @see sqlite3_finalize()
296
* Get the index number of a named parameter.
281
* Get the index number of a named parameter
298
282
* @param parameter name
299
283
* @return index of named parameter