DCL 4.1
Loading...
Searching...
No Matches
IBParam.h
Go to the documentation of this file.
1#ifndef __DCL_IB_PARAM_H__
2#define __DCL_IB_PARAM_H__ 20020321
3
4__DCL_BEGIN_NAMESPACE
5
6class InputStream;
7
8class IBParam : public SQL::Param
9{
11protected:
12 XSQLVAR* __sqlvar;
13 short __indicator;
14 short __sqltype; // original of __sqlvar->sqltype
15 union {
16 int16_t i16;
17 int32_t i32;
18 int64_t i64;
19 float f32;
20 double f64;
21 ISC_DATE date;
22 ISC_TIME time;
23 ISC_TIMESTAMP ts;
24#if defined(FIREBIRD_IBASE_H) && FB_API_VER >= 40
25 ISC_TIME_TZ_EX time_tz;
26 ISC_TIMESTAMP_TZ_EX ts_tz;
27#endif
28 ISC_QUAD blob_id;
29 } __data;
30
31protected:
32 void setErrorStatus(SQL::Error _error,
33 const wchar_t* _filename, int _line);
34 void setErrorStatus(const ByteString& _message,
35 const wchar_t* _filename, int _line);
36
37 IBQuery* query() const;
38
39public:
40 bool init(SQL::Query* _query, XSQLVAR* _sqlvar);
41 void onAfterExecute();
42
44 virtual ~IBParam();
45
46protected:
47 // interfaces
48 virtual const wchar_t* serverDataTypeName() const;
49
50 virtual void setNull();
51 virtual bool __setData(
52 _CONST void* _value,
53 size_t _size,
54 SQL::DataType _dataType,
55 SQL::DataType _assignType
56 );
57
58 // implementation
59 bool setInteger(const void* _value, size_t _size);
60 bool setUInteger(const void* _value, size_t _size);
61 bool setFloat(const void* _value, size_t _size);
62 bool setDate(const SQL::Date* _value, size_t _size);
63 bool setTime(const SQL::Time* _value, size_t _size);
64 bool setTimeStamp(const SQL::TimeStamp* _value, size_t _size);
65
66 bool setBytesToBlob(const byte_t* _value, size_t _size);
67 bool setInputStreamToBlob(_CONST InputStream* _input, size_t _size);
68 bool cancelBlob();
69};
70
72 const wchar_t* _filename, int _line)
73{
74 ((IBConnection*)Param::connection())
75 ->setErrorStatus(_error, _filename, _line);
76}
77
78inline void IBParam::setErrorStatus(const ByteString& _message,
79 const wchar_t* _filename, int _line)
80{
81 ((IBConnection*)Param::connection())
82 ->setErrorStatus(_message, _filename, _line);
83}
84
85inline IBQuery* IBParam::query() const
86{
87 return (IBQuery*)Param::__queryHandle;
88}
89
90__DCL_END_NAMESPACE
91
92#endif // __DCL_IB_PARAM_H__
93
94
unsigned char byte_t
Definition Config.h:274
#define _CONST
Definition Config.h:353
#define DECLARE_CLASSINFO(class_name)
Definition Object.h:210
bool cancelBlob()
Definition IBParam.cpp:456
virtual const wchar_t * serverDataTypeName() const
Definition IBParam.cpp:72
virtual void setNull()
Definition IBParam.cpp:77
void onAfterExecute()
Definition IBParam.cpp:62
float f32
Definition IBParam.h:19
bool init(SQL::Query *_query, XSQLVAR *_sqlvar)
Definition IBParam.cpp:45
virtual ~IBParam()
Definition IBParam.cpp:38
bool setInputStreamToBlob(_CONST InputStream *_input, size_t _size)
Definition IBParam.cpp:381
int64_t i64
Definition IBParam.h:18
bool setTime(const SQL::Time *_value, size_t _size)
Definition IBParam.cpp:266
ISC_TIME time
Definition IBParam.h:22
bool setDate(const SQL::Date *_value, size_t _size)
Definition IBParam.cpp:246
ISC_TIMESTAMP ts
Definition IBParam.h:23
IBQuery * query() const
Definition IBParam.h:85
void setErrorStatus(SQL::Error _error, const wchar_t *_filename, int _line)
Definition IBParam.h:71
bool setUInteger(const void *_value, size_t _size)
Definition IBParam.cpp:192
ISC_DATE date
Definition IBParam.h:21
bool setInteger(const void *_value, size_t _size)
Definition IBParam.cpp:162
int16_t i16
Definition IBParam.h:16
double f64
Definition IBParam.h:20
ISC_QUAD blob_id
Definition IBParam.h:28
bool setTimeStamp(const SQL::TimeStamp *_value, size_t _size)
Definition IBParam.cpp:295
bool setBytesToBlob(const byte_t *_value, size_t _size)
Definition IBParam.cpp:332
virtual bool __setData(_CONST void *_value, size_t _size, SQL::DataType _dataType, SQL::DataType _assignType)
Definition IBParam.cpp:88
bool setFloat(const void *_value, size_t _size)
Definition IBParam.cpp:222
int32_t i32
Definition IBParam.h:17
DataType
Definition SQLCore.h:62
Error
Definition SQLCore.h:19