DCL 3.7.4
Loading...
Searching...
No Matches
ODBCQuery.h
Go to the documentation of this file.
1#ifndef __DCL_ODBC_QUERY_H__
2#define __DCL_ODBC_QUERY_H__ 20251129
3
4__DCL_BEGIN_NAMESPACE
5
6// ${INFORMIXDIR}/incl/cli/infxcli.h
7#define SQL_INFX_BIGINT (-114)
8
9// ibm.csdk.4.50.12.12
10// SQL_BIGINT, SQL_INFX_BIGINT를 SQL_C_DEFAULT에서 문자열로 처리
11// 이것은 MariaDB BIGINT UNSIGNED를 사용하지 못하게 할 수 있음.
12#define __USE_INFORMIX_FIX 0
13
14// PostgreSQL
15// money를 SQL_FLOAT로 하고 SQL_C_DEFAULT에서 문자열로 처리
16// uuid를 SQL_GUID로 하고 SQL_C_DEFAULT에서 바이너리로 처리
17// character SQLFetch 후 cbColDef < StrLen_or_Ind 버그
18#define __USE_POSTGRES_FIX 1
19
20// MS SQL Server
21// SQLDescribeParam으로 확인된 SQL_SS_* SqlType은
22// SQLBindParameter에서 SqlType으로 사용할 수 없다.
23// ODBC에서 파라미터는 sqltypes.h에서 정의된 것만 사용할 수 있다.
24#define __USE_SS_PARAM_FIX 1
25
26typedef struct __BIND {
27 SQLUSMALLINT number; // ColumnNumber, ParameterNumber
28 // DescribeCol, SQLDescribeParam
29 SQLSMALLINT type; // DataType
30 SQLULEN size; // ColumnSize, ParameterSize
31 SQLSMALLINT precision;
32 SQLSMALLINT scale; // DecimalDigits
33 SQLSMALLINT nullable;
34 // BindCol, BindParameter
35 SQLSMALLINT valueType; // TargetType, ParameterType
36 SQLPOINTER valuePtr; // TargetValuePtr, ParameterValuePtr
37 SQLLEN valueMax; // BufferLength
38 SQLLEN lenORind; // StrLen_or_Ind
40
41class ODBCField;
42class ODBCParam;
43
44class ODBCQuery : public SQL::Query
45{
47public:
48 ODBCConnection* conn() const;
49 SQLHSTMT stmtHandle() const;
50
51protected:
52 SQLHSTMT __hstmt;
53
56
59
60protected:
61 bool reset();
62 bool initFields(SQLSMALLINT _columnCount);
63 bool initParams(size_t _paramCount);
64
65public:
67 virtual ~ODBCQuery();
68 virtual void __destroy();
69 virtual bool __prepare(const char* _sql, size_t _sqllen,
70 size_t _paramCount);
71 virtual bool __execute();
72 virtual bool __fetch();
73 virtual bool __moreResults(bool* _moreResults);
74
75 virtual bool __getField(size_t _index, SQL::Field** _fieldHandleOut);
76 virtual bool __getParam(size_t _index, SQL::Param** _paramHandleOut);
77};
78
79inline ODBCConnection* ODBCQuery::conn() const
80{
81 return (ODBCConnection*)Query::__connHandle;
82}
83
84inline SQLHSTMT ODBCQuery::stmtHandle() const
85{
86 return __hstmt;
87}
88
89__DCL_END_NAMESPACE
90
91#endif // __DCL_ODBC_QUERY_H__
struct __BIND BIND
#define DECLARE_CLASSINFO(class_name)
Definition Object.h:227
virtual void __destroy()
Definition ODBCQuery.cpp:93
virtual ~ODBCQuery()
Definition ODBCQuery.cpp:78
virtual bool __getParam(size_t _index, SQL::Param **_paramHandleOut)
ODBCParam * __params
Definition ODBCQuery.h:57
virtual bool __fetch()
virtual bool __execute()
BIND * __paramBINDs
Definition ODBCQuery.h:54
ODBCField * __fields
Definition ODBCQuery.h:58
virtual bool __prepare(const char *_sql, size_t _sqllen, size_t _paramCount)
BIND * __fieldBINDs
Definition ODBCQuery.h:55
bool initParams(size_t _paramCount)
virtual bool __getField(size_t _index, SQL::Field **_fieldHandleOut)
ODBCQuery(ODBCConnection *_connection)
SQLHSTMT __hstmt
Definition ODBCQuery.h:52
bool initFields(SQLSMALLINT _columnCount)
virtual bool __moreResults(bool *_moreResults)
bool reset()
Definition ODBCQuery.cpp:98
SQLUSMALLINT number
Definition ODBCQuery.h:27
SQLSMALLINT nullable
Definition ODBCQuery.h:33
SQLLEN lenORind
Definition ODBCQuery.h:38
SQLSMALLINT type
Definition ODBCQuery.h:29
SQLULEN size
Definition ODBCQuery.h:30
SQLSMALLINT scale
Definition ODBCQuery.h:32
SQLSMALLINT valueType
Definition ODBCQuery.h:35
SQLLEN valueMax
Definition ODBCQuery.h:37
SQLPOINTER valuePtr
Definition ODBCQuery.h:36
SQLSMALLINT precision
Definition ODBCQuery.h:31