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
96
93
const std::string &sql );
99
* 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
100
97
* the values bound to the statement.
102
98
* @returns an sqlite error code
103
99
* @see sqlite3_reset()
108
104
* Clears the values bound to a statement to NULL.
110
105
* @returns an sqlite error code
111
106
* @see sqlite3_clear_bindings()
113
108
int clear_bindings();
116
* Bind a value to the SQL statement via it's index. This template will
117
* 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
118
113
* internally stores the data anyway, so always binding as text just means
119
114
* we do the conversion instead of sqlite and is no less efficient.
121
115
* @param index the index of the parameter to bind to
122
116
* @param value the value to bind
123
117
* @returns an sqlite error code
137
131
* Bind a string value to the SQL statement via it's index where the value
138
* of that string will not change for the duration of the statement. This
139
* 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
142
135
* @param index the index of the parameter to bind to
143
136
* @param value the invariant string value
144
137
* @param value_length the length of the string including zero-terminator
154
147
* Bind a string value to the SQL statement via it's index where the value
155
* of that string will not change for the duration of the statement. This
156
* 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
159
151
* @param index the index of the parameter to bind to
160
152
* @param value the invariant string value
161
153
* @returns an sqlite error code
169
161
* Bind a string value to the SQL statement via it's index where the value
170
* of that string will not change for the duration of the statement. This
171
* 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
174
165
* @param index the index of the parameter to bind to
175
166
* @param value the invariant string value
176
167
* @returns an sqlite error code
191
181
unsigned int index );
194
* Bind a value to the SQL statement via a named parameter. This template
195
* 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
196
186
* sqlite internally stores the data anyway, so always binding as text just
197
187
* means we do the conversion instead of sqlite and is no less efficient.
199
188
* @param name the named parameter to bind to
200
189
* @param value the value to bind
201
190
* @returns an sqlite error code
213
202
* Bind a string value to the SQL statement via a named parameter where the
214
* 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
215
204
* prevents sqlite from taking its own copy of the string.
217
205
* @param name the named parameter to bind to
218
206
* @param value the invariant string value
219
207
* @param value_length the length of the string including zero-terminator
229
217
* Bind a string value to the SQL statement via a named parameter where the
230
* 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
231
219
* prevents a copy of the string being taken.
233
220
* @param name the named parameter to bind to
234
221
* @param value the invariant string value
235
222
* @returns an sqlite error code
243
230
* Bind a string value to the SQL statement via a named parameter where the
244
* 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
245
232
* prevents a copy of the string being taken.
247
233
* @param name the named parameter to bind to
248
234
* @param value the invariant string value
249
235
* @returns an sqlite error code
267
252
* Stream operator is used to bind values to parameters automatically, in
268
* ascending order. In addition, the null and set_index() auto-binding
253
* ascending order. In addition, the null and set_index() auto-binding
269
254
* manipulators can be used.
271
255
* @param value a value to bind
273
257
template< class T >
290
274
* Finalise an SQL statement.
292
275
* @returns an sqlite error code
293
276
* @see sqlite3_finalize()
298
* Get the index number of a named parameter.
281
* Get the index number of a named parameter
300
282
* @param parameter name
301
283
* @return index of named parameter