全て クラス 名前空間 関数 変数 型定義 列挙型 列挙値 ページ
activeTable.h
1 #ifndef BZS_DB_PROTOCOL_TDAP_CLIENT_ACTIVETABLE_H
2 #define BZS_DB_PROTOCOL_TDAP_CLIENT_ACTIVETABLE_H
3 /* =================================================================
4  Copyright (C) 2014 BizStation Corp All rights reserved.
5 
6  This program is free software; you can redistribute it and/or
7  modify it under the terms of the GNU General Public License
8  as published by the Free Software Foundation; either version 2
9  of the License, or (at your option) any later version.
10 
11  This program is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with this program; if not, write to the Free Software
18  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19  02111-1307, USA.
20  ================================================================= */
21 #include "recordset.h"
22 #include "memRecord.h"
23 
24 namespace bzs
25 {
26 namespace db
27 {
28 namespace protocol
29 {
30 namespace tdap
31 {
32 namespace client
33 {
34 
35 /* For php use */
37 {
38  pq_handle m_filter;
39  int m_index;
40 public:
41  preparedQuery(pq_handle filter) : m_filter(filter),m_index(0){}
42 
43  inline bool supplyValue(int index, const _TCHAR* v)
44  {
45  return client::supplyValue(m_filter, index, v);
46  }
47 
48  inline bool supplyValue(int index, __int64 v)
49  {
50  return client::supplyValue(m_filter, index, v);
51  }
52 
53  inline bool supplyValue(int index, double v)
54  {
55  return client::supplyValue(m_filter, index, v);
56  }
57 
58  inline bool addValue(const _TCHAR* v)
59  {
60  return client::supplyValue(m_filter, m_index++, v);
61  }
62 
63  inline bool addValue(__int64 v)
64  {
65  return client::supplyValue(m_filter, m_index++, v);
66  }
67 
68  inline bool addValue(double v)
69  {
70  return client::supplyValue(m_filter, m_index++, v);
71  }
72 
73  inline void resetAddIndex() { m_index = 0; }
74 /** @cond INTERNAL */
75  inline pq_handle& getFilter() { return m_filter; };
76 /** @endcond */
77 };
78 
79 
80 class DLLLIB activeTable
81 {
82  class activeTableImple* m_imple;
83 
84  activeTable(const activeTable& r);
85  activeTable& operator=(const activeTable& r);
86 
87  template<class T>
88  inline void _supplyValue(pq_handle& q, int index, const T v)
89  {
90  if (!supplyValue(q, index, v))
91  THROW_BZS_ERROR_WITH_MSG(_T("Prepared query : supply value error."));
92  }
93 
94 public:
95  explicit activeTable(idatabaseManager* mgr, const _TCHAR* tableName);
96  explicit activeTable(dbmanager_ptr& mgr, const _TCHAR* tableName);
97  explicit activeTable(database_ptr& db, const _TCHAR* tableName,
98  short mode = TD_OPEN_NORMAL);
99  explicit activeTable(database* db, const _TCHAR* tableName,
100  short mode = TD_OPEN_NORMAL);
101  explicit activeTable(database_ptr& db, short tableIndex,
102  short mode = TD_OPEN_NORMAL);
103  explicit activeTable(database* db, short tableIndex,
104  short mode = TD_OPEN_NORMAL);
105 
106  ~activeTable();
107 
108  activeTable& alias(const _TCHAR* orign, const _TCHAR* alias);
109 
110  activeTable& resetAlias();
111 
112  writableRecord& getWritableRecord();
113 
114  recordset& join(recordset& rs, queryBase& q, const _TCHAR* name1,
115  const _TCHAR* name2 = NULL, const _TCHAR* name3 = NULL,
116  const _TCHAR* name4 = NULL, const _TCHAR* name5 = NULL,
117  const _TCHAR* name6 = NULL, const _TCHAR* name7 = NULL,
118  const _TCHAR* name8 = NULL);
119 
120  recordset&
121  outerJoin(recordset& rs, queryBase& q, const _TCHAR* name1,
122  const _TCHAR* name2 = NULL, const _TCHAR* name3 = NULL,
123  const _TCHAR* name4 = NULL, const _TCHAR* name5 = NULL,
124  const _TCHAR* name6 = NULL, const _TCHAR* name7 = NULL,
125  const _TCHAR* name8 = NULL);
126 
127  recordset& join(recordset& rs, pq_handle& q, const _TCHAR* name1,
128  const _TCHAR* name2 = NULL, const _TCHAR* name3 = NULL,
129  const _TCHAR* name4 = NULL, const _TCHAR* name5 = NULL,
130  const _TCHAR* name6 = NULL, const _TCHAR* name7 = NULL,
131  const _TCHAR* name8 = NULL);
132 
133  recordset&
134  outerJoin(recordset& rs, pq_handle& q, const _TCHAR* name1,
135  const _TCHAR* name2 = NULL, const _TCHAR* name3 = NULL,
136  const _TCHAR* name4 = NULL, const _TCHAR* name5 = NULL,
137  const _TCHAR* name6 = NULL, const _TCHAR* name7 = NULL,
138  const _TCHAR* name8 = NULL);
139 
140  activeTable& index(int v);
141  table_ptr table() const;
142  activeTable& option(int v);
143  pq_handle prepare(queryBase& q, bool serverPrepare = false);
144  recordset& read(recordset& rs, queryBase& q);
145  recordset& read(recordset& rs, queryBase& q, validationFunc func);
146  recordset& read(recordset& rs, pq_handle& q);
147  recordset& read(recordset& rs, pq_handle& q, validationFunc func);
148  recordset& readMore(recordset& rs);
149  /** @cond INTERNAL */
150  template<class T0>
151  recordset& read(recordset& rs, pq_handle& q, const T0 v0)
152  {
153  _supplyValue(q, 0, v0);
154  read(rs, q);
155  return rs;
156  }
157 
158  template<class T0, class T1>
159  recordset& read(recordset& rs, pq_handle& q, const T0 v0, const T1 v1)
160  {
161  _supplyValue(q, 0, v0);
162  _supplyValue(q, 1, v1);
163  read(rs, q);
164  return rs;
165  }
166 
167  template<class T0, class T1, class T2>
168  recordset& read(recordset& rs, pq_handle& q, const T0 v0, const T1 v1,
169  const T2 v2)
170  {
171  _supplyValue(q, 0, v0);
172  _supplyValue(q, 1, v1);
173  _supplyValue(q, 2, v2);
174  read(rs, q);
175  return rs;
176  }
177 
178  template<class T0, class T1, class T2, class T3>
179  recordset& read(recordset& rs, pq_handle& q, const T0 v0, const T1 v1,
180  const T2 v2, const T3 v3)
181  {
182  _supplyValue(q, 0, v0);
183  _supplyValue(q, 1, v1);
184  _supplyValue(q, 2, v2);
185  _supplyValue(q, 3, v3);
186  read(rs, q);
187  return rs;
188  }
189 
190  template<class T0, class T1, class T2, class T3, class T4>
191  recordset& read(recordset& rs, pq_handle& q, const T0 v0, const T1 v1,
192  const T2 v2, const T3 v3, const T4 v4)
193  {
194  _supplyValue(q, 0, v0);
195  _supplyValue(q, 1, v1);
196  _supplyValue(q, 2, v2);
197  _supplyValue(q, 3, v3);
198  _supplyValue(q, 4, v4);
199  read(rs, q);
200  return rs;
201  }
202 
203  template<class T0, class T1, class T2, class T3, class T4, class T5>
204  recordset& read(recordset& rs, pq_handle& q, const T0 v0, const T1 v1,
205  const T2 v2, const T3 v3, const T4 v4, const T5 v5)
206  {
207  _supplyValue(q, 0, v0);
208  _supplyValue(q, 1, v1);
209  _supplyValue(q, 2, v2);
210  _supplyValue(q, 3, v3);
211  _supplyValue(q, 4, v4);
212  _supplyValue(q, 5, v5);
213  read(rs, q);
214  return rs;
215  }
216 
217  template<class T0, class T1, class T2, class T3, class T4, class T5, class T6>
218  recordset& read(recordset& rs, pq_handle& q, const T0 v0, const T1 v1,
219  const T2 v2, const T3 v3, const T4 v4, const T5 v5,
220  const T6 v6)
221  {
222  _supplyValue(q, 0, v0);
223  _supplyValue(q, 1, v1);
224  _supplyValue(q, 2, v2);
225  _supplyValue(q, 3, v3);
226  _supplyValue(q, 4, v4);
227  _supplyValue(q, 5, v5);
228  _supplyValue(q, 6, v6);
229  read(rs, q);
230  return rs;
231  }
232 
233  template<class T0, class T1, class T2, class T3, class T4, class T5, class T6,
234  class T7>
235  recordset& read(recordset& rs, pq_handle& q, const T0 v0, const T1 v1,
236  const T2 v2, const T3 v3, const T4 v4, const T5 v5,
237  const T6 v6, const T7 v7)
238  {
239  _supplyValue(q, 0, v0);
240  _supplyValue(q, 1, v1);
241  _supplyValue(q, 2, v2);
242  _supplyValue(q, 3, v3);
243  _supplyValue(q, 4, v4);
244  _supplyValue(q, 5, v5);
245  _supplyValue(q, 6, v6);
246  _supplyValue(q, 7, v7);
247  read(rs, q);
248  return rs;
249  }
250  /** @endcond */
251 
252  /** @cond INTERNAL */
253 
254  template <class T0> activeTable& keyValue(const T0 kv0)
255  {
256  keyValueSetter<T0>::set(table(), table()->keyNum(), kv0);
257  return *this;
258  }
259 
260  template <class T0, class T1>
261  activeTable& keyValue(const T0 kv0, const T1 kv1)
262  {
263  keyValueSetter<T0, T1>::set(table(), table()->keyNum(), kv0, kv1);
264  return *this;
265  }
266 
267  template <class T0, class T1, class T2>
268  activeTable& keyValue(const T0 kv0, const T1 kv1, const T2 kv2)
269  {
270  keyValueSetter<T0, T1, T2>::set(table(), table()->keyNum(), kv0, kv1,
271  kv2);
272  return *this;
273  }
274 
275  template <class T0, class T1, class T2, class T3>
276  activeTable& keyValue(const T0 kv0, const T1 kv1, const T2 kv2,
277  const T3 kv3)
278  {
279  keyValueSetter<T0, T1, T2, T3>::set(table(), table()->keyNum(), kv0,
280  kv1, kv2, kv3);
281  return *this;
282  }
283 
284  template <class T0, class T1, class T2, class T3, class T4>
285  activeTable& keyValue(const T0 kv0, const T1 kv1, const T2 kv2,
286  const T3 kv3, const T4 kv4)
287  {
288  keyValueSetter<T0, T1, T2, T3, T4>::set(table(), table()->keyNum(), kv0,
289  kv1, kv2, kv3, kv4);
290  return *this;
291  }
292 
293  template <class T0, class T1, class T2, class T3, class T4, class T5>
294  activeTable& keyValue(const T0 kv0, const T1 kv1, const T2 kv2,
295  const T3 kv3, const T4 kv4, const T5 kv5)
296  {
297  keyValueSetter<T0, T1, T2, T3, T4, T5>::set(
298  table(), table()->keyNum(), kv0, kv1, kv2, kv3, kv4, kv5);
299  return *this;
300  }
301 
302  template <class T0, class T1, class T2, class T3, class T4, class T5,
303  class T6>
304  activeTable& keyValue(const T0 kv0, const T1 kv1, const T2 kv2,
305  const T3 kv3, const T4 kv4, const T5 kv5,
306  const T6 kv6)
307  {
308  keyValueSetter<T0, T1, T2, T3, T4, T5, T6>::set(
309  table(), table()->keyNum(), kv0, kv1, kv2, kv3, kv4, kv5, kv6);
310  return *this;
311  }
312 
313  /** @endcond */
314 
315  template <class T0, class T1, class T2, class T3, class T4, class T5,
316  class T6, class T7>
317  activeTable& keyValue(const T0 kv0, const T1 kv1, const T2 kv2,
318  const T3 kv3, const T4 kv4, const T5 kv5,
319  const T6 kv6, const T7 kv7)
320  {
321  keyValueSetter<T0, T1, T2, T3, T4, T5, T6, T7>::set(
322  table(), table()->keyNum(), kv0, kv1, kv2, kv3, kv4, kv5, kv6, kv7);
323  return *this;
324  }
325 
326  static activeTable* create(idatabaseManager* mgr, const _TCHAR* tableName);
327  static activeTable* create(dbmanager_ptr& mgr, const _TCHAR* tableName);
328  static activeTable* create(database_ptr& db, const _TCHAR* tableName,
329  short mode = TD_OPEN_NORMAL);
330  static activeTable* create(database* db, const _TCHAR* tableName,
331  short mode = TD_OPEN_NORMAL);
332  static activeTable* create(database_ptr& db, short tableIndex,
333  short mode = TD_OPEN_NORMAL);
334  static activeTable* create(database* db, short tableIndex,
335  short mode = TD_OPEN_NORMAL);
336 
337  void release();
338  void releaseTable();
339 };
340 
341 } // namespace client
342 } // namespace tdap
343 } // namespace protocol
344 } // namespace db
345 } // namespace bzs
346 
347 #endif // BZS_DB_PROTOCOL_TDAP_CLIENT_ACTIVETABLE_H
activeTableの読み取りクエリー 結果セットクラス
Definition: recordset.h:38
pq_handle prepare(table_ptr &tb, const queryBase &q, bool serverPrepare=false)
Definition: trdboostapi.h:580
bool supplyValue(int index, const _TCHAR *v)
Definition: activeTable.h:43
クエリー(フィルター)作成の補助をするためのベースクラス
Definition: table.h:354
boost::shared_ptr< idatabaseManager > dbmanager_ptr
Definition: trdboostapi.h:1260
boost::shared_ptr< table > table_ptr
Definition: fields.h:251
boost::function< int(const fields &)> validationFunc
Definition: trdboostapi.h:251
boost::shared_ptr< database > database_ptr
Definition: fields.h:250
bool supplyValue(int index, double v)
Definition: activeTable.h:53
テーブルアクセスクラス (nocopyable)
Definition: table.h:91
void resetAddIndex()
Definition: activeTable.h:73
プリペアードクエリークラス
Definition: activeTable.h:36
データベースとテーブルを管理するインタフェース
Definition: trdboostapi.h:172
bool DLLLIB supplyValue(pq_handle &filter, int index, const _TCHAR *v)
bool supplyValue(int index, __int64 v)
Definition: activeTable.h:48
preparedQuery(pq_handle filter)
Definition: activeTable.h:41
activeTable & keyValue(const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3, const T4 kv4, const T5 kv5, const T6 kv6, const T7 kv7)
Definition: activeTable.h:317
データベースアクセスクラス
Definition: database.h:59
void releaseTable(table *p)
Definition: trdboostapi.h:812
bool addValue(const _TCHAR *v)
Definition: activeTable.h:58
書き込み可能な行のクラスです。
Definition: memRecord.h:170
bool addValue(__int64 v)
Definition: activeTable.h:63
recordset 用テーブルアクセスクラス
Definition: activeTable.h:80
bool addValue(double v)
Definition: activeTable.h:68

Transactd SDK 2018年07月31日(火) 19時40分19秒 doxygen