Version: 1.0.0
odbc_param.cpp
Go to the documentation of this file.
1 #include "wx/database/wxprec.h"
2 
3 #if wxUSE_DATABASE_ODBC
4 
5 // ctor
7 {
9  m_nBufferLength = SQL_NULL_DATA;
10 }
11 
12 wxOdbcParameter::wxOdbcParameter(const wxString& strValue)
13 {
15  m_strValue = strValue;
17 }
18 
20 {
22  m_nValue = nValue;
23  m_nBufferLength = 0;
24 }
25 
26 wxOdbcParameter::wxOdbcParameter(double dblValue)
27 {
29  m_dblValue = dblValue;
30  m_nBufferLength = 0;
31 }
32 
34 {
36  m_bValue = bValue;
37  m_nBufferLength = 0;
38 }
39 
40 wxOdbcParameter::wxOdbcParameter(const wxDateTime& dateValue)
41 {
43 
44  m_DateValue.year = dateValue.GetYear();
45  m_DateValue.month = dateValue.GetMonth()+1;
46  m_DateValue.day = dateValue.GetDay();
47 
48  m_DateValue.hour = dateValue.GetHour();
49  m_DateValue.minute = dateValue.GetMinute();
50  m_DateValue.second = dateValue.GetSecond();
51  m_DateValue.fraction = dateValue.GetMillisecond();
52 
53  m_nBufferLength = 0;
54 }
55 
56 wxOdbcParameter::wxOdbcParameter(const void* pData, long nDataLength)
57 {
59  void* pBuffer = m_BufferValue.GetWriteBuf(nDataLength);
60  memcpy(pBuffer, pData, nDataLength);
61  m_nBufferLength = nDataLength;
62 }
63 
64 
66 {
68  {
69  return 0;
70  }
71  else
72  {
73  return m_nBufferLength;
74  }
75 }
76 
78 {
80  {
81  return &m_nBufferLength;
82  }
83  else
84  {
85  return NULL;
86  }
87 }
88 
90 {
91  const void *pReturn = NULL;
92 
93  switch (m_nParameterType)
94  {
97  pReturn = m_CharBufferValue;
98  //wxPrintf(_("Parameter: '%s'\n"), m_strValue.c_str());
99  //pReturn = m_strValue.c_str();
100  break;
102  pReturn = &m_nValue;
103  break;
105  pReturn = &m_dblValue;
106  break;
108  pReturn = &m_DateValue;
109  break;
111  pReturn = &m_bValue;
112  break;
114  pReturn = m_BufferValue.GetData();
115  break;
117  pReturn = NULL;
118  break;
119  default:
120  pReturn = NULL;
121  break;
122  };
123  return (void*)pReturn;
124 }
125 
126 SQLSMALLINT wxOdbcParameter::GetValueType()
127 {
128  SQLSMALLINT nReturn = SQL_C_LONG;
129 
130  switch (m_nParameterType)
131  {
133  nReturn = SQL_C_CHAR;
134  break;
136  nReturn = SQL_C_LONG;
137  break;
139  nReturn = SQL_C_DOUBLE;
140  break;
142  nReturn = SQL_C_TYPE_TIMESTAMP;
143  break;
145  nReturn = SQL_C_LONG;
146  break;
148  nReturn = SQL_C_BINARY;
149  break;
151  nReturn = SQL_C_CHAR;
152  break;
153  default:
154  nReturn = SQL_C_NUMERIC;
155  break;
156  };
157  return nReturn;
158 }
159 
161 {
162  SQLSMALLINT nReturn = SQL_INTEGER;
163 
164  switch (m_nParameterType)
165  {
167  nReturn = SQL_VARCHAR;
168  break;
170  nReturn = SQL_INTEGER;
171  break;
173  nReturn = SQL_DOUBLE;
174  break;
176  //nReturn = SQL_TYPE_TIMESTAMP;
177  nReturn = SQL_TIMESTAMP;
178  break;
180  nReturn = SQL_INTEGER;
181  break;
183  nReturn = SQL_BINARY;
184  //nReturn = SQL_LONGVARBINARY;
185  break;
187  nReturn = SQL_NULL_DATA;
188  break;
189  default:
190  nReturn = SQL_INTEGER;
191  break;
192  };
193  return nReturn;
194 
195 }
196 
198 {
200 }
201 
203 {
204  // either decimal_digits or 0 (date, bool, int)
205  SQLSMALLINT nReturn = 0;
206 
207  switch (m_nParameterType)
208  {
215  nReturn = 0;
216  break;
218  nReturn = 11;
219  break;
220  default:
221  nReturn = 0;
222  break;
223  };
224  return nReturn;
225 }
226 
227 SQLUINTEGER wxOdbcParameter::GetColumnSize()
228 {
229  SQLUINTEGER nReturn = 0;
230 
231  switch (m_nParameterType)
232  {
235  nReturn = m_nBufferLength;
236  break;
241  nReturn = 0;
242  break;
244  nReturn = 19;
245  break;
246  default:
247  nReturn = 0;
248  break;
249  };
250  return nReturn;
251 }
252 
254 {
255  return &m_nBufferLength;
256 }
257 
258 #endif//wxUSE_DATABASE_ODBC
long GetDataLength()
int m_nParameterType
Definition: odbc_param.h:45
double m_dblValue
Definition: odbc_param.h:51
SQLLEN * GetParameterLengthPtr()
SQLSMALLINT GetValueType()
void * GetDataPtr()
wxMemoryBuffer m_BufferValue
Definition: odbc_param.h:54
SQLUINTEGER GetColumnSize()
wxCharBuffer m_CharBufferValue
Definition: odbc_param.h:55
wxString m_strValue
Definition: odbc_param.h:49
SQLSMALLINT GetDecimalDigits()
virtual size_t GetEncodedStreamLength(const wxString &inputString)
long m_nBufferLength
Definition: odbc_param.h:56
TIMESTAMP_STRUCT m_DateValue
Definition: odbc_param.h:48
virtual const wxCharBuffer ConvertToUnicodeStream(const wxString &inputString)
SQLSMALLINT GetParameterType()
long * GetDataLengthPointer()