DCL 3.7.4
Loading...
Searching...
No Matches
ODBCField.cpp
Go to the documentation of this file.
1#include <dcl/Config.h>
2
3#ifdef _MSC_VER
4#include <windows.h>
5#endif
6#include <sql.h>
7#include <sqlext.h>
8#include <msodbcsql.h>
9
10#include <dcl/Object.h>
11#if __DCL_HAVE_ALLOC_DEBUG
12#undef __DCL_ALLOC_LEVEL
13#define __DCL_ALLOC_LEVEL __DCL_ALLOC_INTERNAL
14#endif
15
16#include <dcl/size_t.h>
17#include <dcl/SQLCore.h>
18#include <dcl/OutputStream.h>
19#include <dcl/Charset.h>
20
21#include "ODBCConnection.h"
22#include "ODBCQuery.h"
23#include "ODBCData.h"
24#include "ODBCField.h"
25
26#define __TRACE_THIS 0
27#if __TRACE_THIS
28#define __DCL_TRACE0_N __DCL_TRACE0
29#define __DCL_TRACE1_N __DCL_TRACE1
30#define __DCL_TRACE2_N __DCL_TRACE2
31#define __DCL_TRACE3_N __DCL_TRACE3
32#define __DCL_TRACE4_N __DCL_TRACE4
33#else
34#define __DCL_TRACE0_N(fmt)
35#define __DCL_TRACE1_N(fmt, arg)
36#define __DCL_TRACE2_N(fmt, arg1, arg2)
37#define __DCL_TRACE3_N(fmt, arg1, arg2, arg3)
38#define __DCL_TRACE4_N(fmt, arg1, arg2, arg3, arg4)
39#endif
40
41#undef __THIS_FILE__
42static const char_t __THIS_FILE__[] = __T("dcl/sql/ODBCField.cpp");
43
44__DCL_BEGIN_NAMESPACE
45
46#define __SET_ERROR(_error) \
47 connection()->setErrorStatus(_error, __THIS_FILE__, __LINE__)
48#define __SET_ERROR_MSG(_msg) \
49 conn()->setErrorMessage(_msg, __THIS_FILE__, __LINE__)
50#define __SET_ERROR_HANDLE(_rc, _htype, _handle) \
51 conn()->setErrorHandle(_rc, _htype, _handle, __THIS_FILE__, __LINE__)
52
59
61{
62 // __DCL_TRACE1_N(L"~ODBCField [%ls]\n", Field::__name.data());
63}
64
66{
67 return (ODBCQuery*)Field::__queryHandle;
68}
69
70bool ODBCField::init(SQL::Query* _queryHandle, BIND* _bind, const String& _name)
71{
72 __DCL_ASSERT(_queryHandle != NULL);
73 Field::__queryHandle = _queryHandle;
74 Field::__name = _name;
75 Field::__precision = _bind->precision;
76 Field::__scale = _bind->scale;
77 Field::__dataType = ODBCData::init(_bind);
78
79 if (Field::__dataType == SQL::typeUnknown) {
81 return false;
82 }
83 return true;
84}
85
86const wchar_t* ODBCField::serverDataTypeName() const
87{
89}
90
91bool ODBCField::__getDataSize(size_t* _size, bool _maxsize)
92{
93 return ODBCData::__getDataSize(_size, _maxsize);
94}
95
96#define __TYPE_IS(_type) (__bind->type == _type)
97
99 void* _buf,
100 size_t* _size,
101 SQL::DataType _bufType
102)
103{
104 return ODBCData::__getData(_buf, _size, _bufType);
105}
106
107__DCL_END_NAMESPACE
#define __THIS_FILE__
Definition _trace.h:14
#define NULL
Definition Config.h:312
wchar_t char_t
Definition Config.h:247
struct __BIND BIND
#define __DCL_ASSERT(expr)
Definition Object.h:394
#define IMPLEMENT_CLASSINFO(class_name, base_class_name)
Definition Object.h:245
#define __T(str)
Definition Object.h:60
#define __SET_ERROR(_errorCode)
Definition SQLCore.cpp:149
virtual ODBCQuery * query() const =0
bool __getData(void *_buf, size_t *_size, SQL::DataType _bufType)
Definition ODBCData.cpp:561
SQL::DataType init(BIND *_bind)
Definition ODBCData.cpp:64
const wchar_t * serverDataTypeName() const
Definition ODBCData.cpp:449
bool __getDataSize(size_t *_size, bool _maxsize)
Definition ODBCData.cpp:454
virtual bool __getDataSize(size_t *_size, bool _maxsize)
Definition ODBCField.cpp:91
virtual ~ODBCField()
Definition ODBCField.cpp:60
virtual bool __getData(void *_buf, size_t *_size, SQL::DataType _bufType)
Definition ODBCField.cpp:98
bool init(SQL::Query *_query, BIND *_bind, const String &_name)
Definition ODBCField.cpp:70
virtual const wchar_t * serverDataTypeName() const
Definition ODBCField.cpp:86
DataType
Definition SQLCore.h:59
@ typeUnknown
Definition SQLCore.h:60
@ eNotSupportDataType
Definition SQLCore.h:48
SQLSMALLINT scale
Definition ODBCQuery.h:32
SQLSMALLINT precision
Definition ODBCQuery.h:31