#include <SqParam.h>
|
| bool | init (SQL::Query *_query, int _number, const char *_name) |
| bool | onBeforeExecute () |
| bool | onAfterExecute () |
| | SqParam () |
| virtual | ~SqParam () |
| virtual const wchar_t * | serverDataTypeName () const |
| virtual void | setNull () |
| virtual bool | __setData (_CONST void *_val, size_t _size, SQL::DataType _valType, SQL::DataType _sqlType) |
| bool | setInteger (const void *_val, size_t _size) |
| bool | setUInteger (const void *_val, size_t _size) |
| bool | setFloat (const void *_val, size_t _size) |
| bool | setDate (const SQL::Date *_val, size_t _size) |
| bool | setTime (const SQL::Time *_val, size_t _size) |
| bool | setTimeStamp (const SQL::TimeStamp *_val, size_t _size) |
| bool | setInterval (const SQL::Interval *_val, size_t _size) |
| bool | setBytes (_CONST void *_val, size_t _size, SQL::DataType _valType, SQL::DataType _sqlType) |
| virtual String | toString () const |
| virtual void | destroy () |
| String | className () const |
| bool | isInstanceOf (const std::type_info &typeinfo) const |
| virtual const std::type_info & | typeInfo () const |
Definition at line 6 of file SqParam.h.
◆ SqParam()
◆ ~SqParam()
◆ __setData()
Implements SQL::Param.
Definition at line 130 of file SqParam.cpp.
136{
138 switch(_valType) {
141 break;
144 break;
147 break;
149 r =
setDate((
const SQL::Date*)_val, _size);
150 break;
152 r =
setTime((
const SQL::Time*)_val, _size);
153 break;
156 break;
159 break;
163 r =
setBytes(_val, _size, _valType, _sqlType);
164 break;
165 default: {
167 return false;
168 }
169 }
170
172 Param::__dataType = _sqlType;
173 }
175}
#define __SET_ERROR(_errorCode)
bool setUInteger(const void *_val, size_t _size)
bool setDate(const SQL::Date *_val, size_t _size)
bool setFloat(const void *_val, size_t _size)
bool setTime(const SQL::Time *_val, size_t _size)
bool setBytes(_CONST void *_val, size_t _size, SQL::DataType _valType, SQL::DataType _sqlType)
bool setInteger(const void *_val, size_t _size)
bool setTimeStamp(const SQL::TimeStamp *_val, size_t _size)
bool setInterval(const SQL::Interval *_val, size_t _size)
◆ conn()
◆ init()
| bool SqParam::init |
( |
SQL::Query * | _query, |
|
|
int | _number, |
|
|
const char * | _name ) |
Definition at line 58 of file SqParam.cpp.
59{
62
63 Param::__queryHandle = _queryHandle;
64
65 __number = _number;
66 __name.assign(_name);
67
68 return true;
69}
#define __DCL_ASSERT(expr)
◆ onAfterExecute()
| bool SqParam::onAfterExecute |
( |
| ) |
|
Definition at line 107 of file SqParam.cpp.
108{
110 return true;
111}
◆ onBeforeExecute()
| bool SqParam::onBeforeExecute |
( |
| ) |
|
Definition at line 71 of file SqParam.cpp.
72{
73 int rc = SQLITE_OK;
74 switch (__type) {
75 case SQLITE_INTEGER: {
76 rc = sqlite3_bind_int64(
query()->stmt(), __number, __data.n);
77 break;
78 }
79 case SQLITE_FLOAT: {
80 rc = sqlite3_bind_double(
query()->stmt(), __number, __data.d);
81 break;
82 }
83 case SQLITE_TEXT: {
84 rc = sqlite3_bind_text64(
query()->stmt(), __number, (
const char*)__data.p,
85 __size,
NULL, SQLITE_UTF8);
86 break;
87 }
88 case SQLITE_BLOB: {
89 rc = sqlite3_bind_blob(
query()->stmt(), __number, __data.p, (
int)__size,
NULL);
90 break;
91 }
92 case SQLITE_NULL:
93 default: {
94 rc = sqlite3_bind_null(
query()->stmt(), __number);
95 }
96 }
97
98 if (rc != SQLITE_OK) {
99 ByteStringBuilder sb = sqlite3_errmsg(
conn()->connHandle());
100 sb.append(' ').append(__name);
102 return false;
103 }
104
105 return true;
106}
#define __SET_ERROR_MSG(_message)
SqConnection * conn() const
◆ query()
Definition at line 62 of file SqParam.h.
63{
64 return (SqQuery*)Param::__queryHandle;
65}
◆ serverDataTypeName()
| const wchar_t * SqParam::serverDataTypeName |
( |
| ) |
const |
|
virtual |
Implements SQL::Field.
Definition at line 113 of file SqParam.cpp.
114{
116}
const wchar_t * __dataTypeName(const ifx_sqlvar_t *_sqlvar)
◆ setBytes()
Definition at line 405 of file SqParam.cpp.
411{
412 const char* val = (const char*)_val;
413 size_t size = _size;
416 try {
418 val = __bytes;
419 size = __bytes.length();
420 }
421 catch (IOException* _e) {
424 return false;
425 }
430 }
431 else {
433 }
434 }
435
436 __data.p = (const void*)val;
437 __size = size;
438
439 __type = valType ==
SQL::typeText ? SQLITE_TEXT : SQLITE_BLOB;
440 return true;
441}
String toStringAll() const
static ByteString readBytes(InputStream &_input, size_t _n=(size_t) -1) __DCL_THROWS1(IOException *)
◆ setDate()
| bool SqParam::setDate |
( |
const SQL::Date * | _val, |
|
|
size_t | _size ) |
Definition at line 256 of file SqParam.cpp.
257{
258 if (_size != sizeof(SQL::Date)) {
260 return false;
261 }
262
263 const SQL::Date* val = (const SQL::Date*)_val;
264 ByteStringBuilder sb;
265 sb.format(
266 "%04d-%02d-%02d",
270 );
272 sb += " BC";
273 }
274 __bytes = sb.toByteString();
275
276 __data.p = (void*) __bytes.data();
277 __size = __bytes.length();
278
279 __type = SQLITE_TEXT;
280 return true;
281}
◆ setFloat()
| bool SqParam::setFloat |
( |
const void * | _val, |
|
|
size_t | _size ) |
Definition at line 235 of file SqParam.cpp.
236{
237 switch (_size) {
238 case sizeof(float) : {
239 __data.d = *(float*)_val;
240 break;
241 }
242 case sizeof(double) : {
243 __data.d = *(double*)_val;
244 break;
245 }
246 default: {
248 return false;
249 }
250 }
251
252 __type = SQLITE_FLOAT;
253 return true;
254}
◆ setInteger()
| bool SqParam::setInteger |
( |
const void * | _val, |
|
|
size_t | _size ) |
Definition at line 177 of file SqParam.cpp.
178{
179 switch (_size) {
180 case sizeof(int8_t) : {
181 __data.n = *(int8_t*)_val;
182 break;
183 }
184 case sizeof(int16_t) : {
185 __data.n = *(int16_t*)_val;
186 break;
187 }
188 case sizeof(int32_t) : {
189 __data.n = *(int32_t*)_val;
190 break;
191 }
192 case sizeof(int64_t) : {
193 __data.n = *(int64_t*)_val;
194 break;
195 }
196 default: {
198 return false;
199 }
200 }
201
202 __type = SQLITE_INTEGER;
203 return true;
204}
◆ setInterval()
| bool SqParam::setInterval |
( |
const SQL::Interval * | _val, |
|
|
size_t | _size ) |
Definition at line 366 of file SqParam.cpp.
367{
368 if (_size != sizeof(SQL::Interval)) {
370 return false;
371 }
372
373 const SQL::Interval* val = (const SQL::Interval*)_val;
375 __bytes = ByteString::format(
376 "P%dY%dM%dDT%dH%dM%d.%dS",
384 );
385 }
386 else {
387 __bytes = ByteString::format(
388 "P%dY%dM%dDT%dH%dM%-0.%dS",
395 );
396 }
397
398 __data.p = (void*)__bytes.data();
399 __size = __bytes.length();
400
401 __type = SQLITE_TEXT;
402 return true;
403}
◆ setNull()
| void SqParam::setNull |
( |
| ) |
|
|
virtual |
◆ setTime()
| bool SqParam::setTime |
( |
const SQL::Time * | _val, |
|
|
size_t | _size ) |
Definition at line 283 of file SqParam.cpp.
284{
285 if (_size != sizeof(SQL::Time)) {
287 return false;
288 }
289
290 const SQL::Time* val = (const SQL::Time*)_val;
292 __bytes = ByteString::format(
293 "%02d:%02d:%02d.%06d",
298 );
299 }
300 else {
301 __bytes = ByteString::format(
302 "%02d:%02d:%02d.%06d %+03d:%02d",
309 );
310 }
311
312 __data.p = (void*)__bytes.data();
313 __size = __bytes.length();
314
315 __type = SQLITE_TEXT;
316 return true;
317}
◆ setTimeStamp()
| bool SqParam::setTimeStamp |
( |
const SQL::TimeStamp * | _val, |
|
|
size_t | _size ) |
Definition at line 319 of file SqParam.cpp.
320{
321 if (_size != sizeof(SQL::TimeStamp)) {
323 return false;
324 }
325
326 const SQL::TimeStamp* val = (const SQL::TimeStamp*)_val;
327 ByteStringBuilder sb;
329 sb.format(
330 "%04d-%02d-%02d %02d:%02d:%02d.%06d",
338 );
339 }
340 else {
341 sb.format(
342 "%04d-%02d-%02d %02d:%02d:%02d.%06d %+03d:%02d",
352 );
353 }
355 sb += " BC";
356 }
357 __bytes = sb.toByteString();
358
359 __data.p = (void*)__bytes.data();
360 __size = __bytes.length();
361
362 __type = SQLITE_TEXT;
363 return true;
364}
◆ setUInteger()
| bool SqParam::setUInteger |
( |
const void * | _val, |
|
|
size_t | _size ) |
Definition at line 206 of file SqParam.cpp.
207{
208 switch (_size) {
209 case sizeof(uint8_t) : {
210 __data.n = *(uint8_t*)_val;
211 break;
212 }
213 case sizeof(uint16_t) : {
214 __data.n = *(uint16_t*)_val;
215 break;
216 }
217 case sizeof(uint32_t) : {
218 __data.n = *(uint32_t*)_val;
219 break;
220 }
221 case sizeof(uint64_t) : {
222 __data.n = *(uint64_t*)_val;
223 break;
224 }
225 default: {
227 return false;
228 }
229 }
230
231 __type = SQLITE_INTEGER;
232 return true;
233}
The documentation for this class was generated from the following files: