transactd 1.2.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/BUILD_UNIX-JA +46 -67
- data/BUILD_WIN-JA +106 -63
- data/CMakeLists.txt +40 -15
- data/README +219 -75
- data/README-JA +207 -76
- data/README_ORMSRCGEN +118 -0
- data/README_ORMSRCGEN-JA +115 -0
- data/bin/common/tdclc_32_2_0.dll +0 -0
- data/bin/common/tdclc_64_2_0.dll +0 -0
- data/build/common/check_for_link_iconv.cmake +18 -14
- data/build/common/create_symlink.cmake.in +25 -0
- data/build/common/get_boost_libs.cmake +23 -23
- data/build/common/options.cmake +0 -66
- data/build/common/smart_install.cmake +3 -3
- data/build/common/transactd.rc.in +15 -5
- data/build/common/transactd_cl_common.cmake +37 -18
- data/build/common/transactd_cl_output.cmake +55 -13
- data/build/common/transactd_common.cmake +108 -31
- data/build/swig/php/generate.cmake.in +15 -17
- data/build/swig/php/generate.cmd.in +15 -9
- data/build/swig/php/php.swg +124 -82
- data/build/swig/php/transactd.no_yield.php +4494 -0
- data/build/swig/php/transactd.no_yield.php.git.patch +685 -0
- data/build/swig/php/transactd.no_yield.php.patch +685 -0
- data/build/swig/php/transactd.yield.php +4461 -0
- data/build/swig/php/transactd.yield.php.git.patch +652 -0
- data/build/swig/php/transactd.yield.php.patch +652 -0
- data/build/swig/referencecounter.h +79 -0
- data/build/swig/ruby/ruby.swg +226 -76
- data/build/swig/ruby/threadBlockRegionWrapper.h +71 -0
- data/build/swig/ruby/without_gvl.swg +87 -0
- data/build/swig/tdcl.i +659 -170
- data/build/swig/validatablepointer.h +91 -0
- data/build/tdclc/CMakeLists.txt +49 -34
- data/build/tdclc/{tdclc_64.cbproj → tdclc.cbproj} +65 -20
- data/build/tdclc/tdclc.rc +0 -0
- data/build/tdclcpp/CMakeLists.txt +84 -20
- data/build/tdclcpp/tdclcpp.rc +0 -0
- data/build/tdclcpp/{tdclcpp_bcb_64.cbproj → tdclcpp_bc.cbproj} +168 -44
- data/build/tdclrb/CMakeLists.txt +84 -66
- data/build/tdclrb/bldgem/extconf.rb +28 -3
- data/build/tdclrb/gem/helper.rb +11 -1
- data/build/tdclrb/gem_output.cmake +20 -16
- data/index_ja.html +15 -0
- data/source/bzs/db/IBlobBuffer.h +15 -17
- data/source/bzs/db/blobBuffer.h +186 -140
- data/source/bzs/db/blobStructs.h +37 -37
- data/source/bzs/db/engine/mysql/IReadRecords.h +34 -34
- data/source/bzs/db/engine/mysql/bookmark.h +150 -147
- data/source/bzs/db/engine/mysql/database.cpp +1721 -1526
- data/source/bzs/db/engine/mysql/database.h +608 -370
- data/source/bzs/db/engine/mysql/dbManager.cpp +213 -201
- data/source/bzs/db/engine/mysql/dbManager.h +115 -104
- data/source/bzs/db/engine/mysql/errorMessage.cpp +49 -50
- data/source/bzs/db/engine/mysql/errorMessage.h +25 -26
- data/source/bzs/db/engine/mysql/fieldAccess.h +55 -61
- data/source/bzs/db/engine/mysql/mydebuglog.cpp +326 -292
- data/source/bzs/db/engine/mysql/mydebuglog.h +63 -55
- data/source/bzs/db/engine/mysql/mysqlInternal.h +182 -125
- data/source/bzs/db/engine/mysql/mysqlThd.cpp +121 -121
- data/source/bzs/db/engine/mysql/mysqlThd.h +20 -20
- data/source/bzs/db/engine/mysql/percentageKey.h +241 -228
- data/source/bzs/db/protocol/ICommandExecuter.h +18 -17
- data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +543 -514
- data/source/bzs/db/protocol/hs/hsCommandExecuter.h +155 -158
- data/source/bzs/db/protocol/tdap/btrDate.cpp +213 -180
- data/source/bzs/db/protocol/tdap/btrDate.h +39 -37
- data/source/bzs/db/protocol/tdap/client/activeTable.cpp +173 -0
- data/source/bzs/db/protocol/tdap/client/activeTable.h +165 -0
- data/source/bzs/db/protocol/tdap/client/activeTableImple.h +370 -0
- data/source/bzs/db/protocol/tdap/client/bulkInsert.h +13 -23
- data/source/bzs/db/protocol/tdap/client/client.cpp +81 -68
- data/source/bzs/db/protocol/tdap/client/client.h +361 -320
- data/source/bzs/db/protocol/tdap/client/connMgr.cpp +17 -22
- data/source/bzs/db/protocol/tdap/client/connMgr.h +17 -19
- data/source/bzs/db/protocol/tdap/client/connectionPool.cpp +243 -0
- data/source/bzs/db/protocol/tdap/client/connectionPool.h +109 -0
- data/source/bzs/db/protocol/tdap/client/database.cpp +327 -219
- data/source/bzs/db/protocol/tdap/client/database.h +141 -118
- data/source/bzs/db/protocol/tdap/client/databaseFactory.cpp +60 -62
- data/source/bzs/db/protocol/tdap/client/databaseManager.h +255 -0
- data/source/bzs/db/protocol/tdap/client/dbDef.cpp +315 -202
- data/source/bzs/db/protocol/tdap/client/dbDef.h +40 -32
- data/source/bzs/db/protocol/tdap/client/dllmain.cpp +390 -371
- data/source/bzs/db/protocol/tdap/client/errorMessage.cpp +148 -56
- data/source/bzs/db/protocol/tdap/client/errorMessage_ja.cpp +149 -57
- data/source/bzs/db/protocol/tdap/client/export.h +35 -0
- data/source/bzs/db/protocol/tdap/client/field.cpp +1985 -0
- data/source/bzs/db/protocol/tdap/client/field.h +393 -0
- data/source/bzs/db/protocol/tdap/client/fieldDDF.cpp +14 -14
- data/source/bzs/db/protocol/tdap/client/fieldDDF.h +11 -14
- data/source/bzs/db/protocol/tdap/client/fieldNameAlias.cpp +123 -0
- data/source/bzs/db/protocol/tdap/client/fieldNameAlias.h +58 -0
- data/source/bzs/db/protocol/tdap/client/fields.h +178 -0
- data/source/bzs/db/protocol/tdap/client/fileDDF.cpp +13 -16
- data/source/bzs/db/protocol/tdap/client/fileDDF.h +11 -17
- data/source/bzs/db/protocol/tdap/client/filter.h +423 -259
- data/source/bzs/db/protocol/tdap/client/groupComp.h +117 -0
- data/source/bzs/db/protocol/tdap/client/groupQuery.cpp +818 -0
- data/source/bzs/db/protocol/tdap/client/groupQuery.h +281 -0
- data/source/bzs/db/protocol/tdap/client/indexDDF.cpp +14 -17
- data/source/bzs/db/protocol/tdap/client/indexDDF.h +11 -14
- data/source/bzs/db/protocol/tdap/client/memRecord.cpp +231 -0
- data/source/bzs/db/protocol/tdap/client/memRecord.h +145 -0
- data/source/bzs/db/protocol/tdap/client/memRecordset.cpp +448 -0
- data/source/bzs/db/protocol/tdap/client/memRecordset.h +159 -0
- data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +300 -173
- data/source/bzs/db/protocol/tdap/client/nsDatabase.h +53 -36
- data/source/bzs/db/protocol/tdap/client/nsTable.cpp +171 -128
- data/source/bzs/db/protocol/tdap/client/nsTable.h +121 -87
- data/source/bzs/db/protocol/tdap/client/pooledDatabaseManager.h +173 -0
- data/source/bzs/db/protocol/tdap/client/recordset.cpp +209 -0
- data/source/bzs/db/protocol/tdap/client/recordset.h +86 -0
- data/source/bzs/db/protocol/tdap/client/recordsetImple.h +596 -0
- data/source/bzs/db/protocol/tdap/client/request.h +227 -170
- data/source/bzs/db/protocol/tdap/client/serializer.cpp +1288 -0
- data/source/bzs/db/protocol/tdap/client/serializer.h +295 -0
- data/source/bzs/db/protocol/tdap/client/sharedData.cpp +9 -12
- data/source/bzs/db/protocol/tdap/client/sharedData.h +18 -16
- data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +494 -473
- data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +51 -53
- data/source/bzs/db/protocol/tdap/client/stringConverter.h +214 -148
- data/source/bzs/db/protocol/tdap/client/table.cpp +929 -1665
- data/source/bzs/db/protocol/tdap/client/table.h +413 -87
- data/source/bzs/db/protocol/tdap/client/trdboostapi.h +642 -534
- data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +25 -40
- data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +11 -15
- data/source/bzs/db/protocol/tdap/client/trdormapi.h +378 -437
- data/source/bzs/db/protocol/tdap/client/trnsctcl.def +1 -1
- data/source/bzs/db/protocol/tdap/fieldComp.h +127 -0
- data/source/bzs/db/protocol/tdap/myDateTime.cpp +352 -345
- data/source/bzs/db/protocol/tdap/mysql/characterset.cpp +75 -78
- data/source/bzs/db/protocol/tdap/mysql/characterset.h +18 -19
- data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +216 -199
- data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +23 -14
- data/source/bzs/db/protocol/tdap/mysql/debuglog.cpp +354 -314
- data/source/bzs/db/protocol/tdap/mysql/debuglog.h +57 -47
- data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +905 -739
- data/source/bzs/db/protocol/tdap/mysql/request.h +152 -159
- data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +1044 -879
- data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +87 -81
- data/source/bzs/db/protocol/tdap/tdapRequest.h +162 -130
- data/source/bzs/db/protocol/tdap/tdapSchema.cpp +368 -166
- data/source/bzs/db/protocol/tdap/tdapSchema.h +702 -566
- data/source/bzs/db/protocol/tdap/tdapcapi.h +387 -353
- data/source/bzs/db/transactd/appBuilderImple.h +21 -20
- data/source/bzs/db/transactd/appModule.cpp +350 -98
- data/source/bzs/db/transactd/appModule.h +31 -37
- data/source/bzs/db/transactd/connManager.cpp +138 -135
- data/source/bzs/db/transactd/connManager.h +28 -21
- data/source/bzs/db/transactd/connectionRecord.h +39 -39
- data/source/bzs/db/transactd/transactd.cpp +217 -203
- data/source/bzs/env/boost_bcb_link.h +131 -0
- data/source/bzs/env/compiler.h +136 -79
- data/source/bzs/env/crosscompile.cpp +57 -57
- data/source/bzs/env/crosscompile.h +130 -115
- data/source/bzs/env/fileopen.h +7 -8
- data/source/bzs/env/mbcswchrLinux.cpp +4 -9
- data/source/bzs/env/mbcswchrLinux.h +37 -34
- data/source/bzs/env/tcharMinGW.h +59 -0
- data/source/bzs/env/tstring.h +90 -95
- data/source/bzs/example/changeSchema.cpp +22 -23
- data/source/bzs/example/changeSchema_c.cpp +22 -24
- data/source/bzs/example/connection_pool_c.cpp +49 -104
- data/source/bzs/example/createDatabase.cpp +40 -47
- data/source/bzs/example/createDatabase_c.cpp +38 -43
- data/source/bzs/example/deleteRecords.cpp +10 -15
- data/source/bzs/example/deleteRecords_c.cpp +10 -14
- data/source/bzs/example/dropDatabase.cpp +3 -9
- data/source/bzs/example/dropDatabase_c.cpp +5 -6
- data/source/bzs/example/insertRecords.cpp +37 -29
- data/source/bzs/example/insertRecords_c.cpp +19 -25
- data/source/bzs/example/ormap_c.cpp +621 -0
- data/source/bzs/example/queryData.cpp +371 -0
- data/source/bzs/example/queryData.h +16 -0
- data/source/bzs/example/query_c.cpp +109 -0
- data/source/bzs/example/readRecords.cpp +27 -27
- data/source/bzs/example/readRecords_c.cpp +25 -23
- data/source/bzs/example/updateRecords.cpp +16 -21
- data/source/bzs/example/updateRecords_c.cpp +8 -12
- data/source/bzs/example/update_with_transaction.cpp +21 -24
- data/source/bzs/example/update_with_transaction_c.cpp +12 -15
- data/source/bzs/example/useORMRecord.cpp +177 -0
- data/source/bzs/netsvc/client/tcpClient.cpp +167 -156
- data/source/bzs/netsvc/client/tcpClient.h +541 -489
- data/source/bzs/netsvc/server/IAppModule.h +119 -32
- data/source/bzs/netsvc/server/iserver.h +21 -23
- data/source/bzs/netsvc/server/serverCpt.cpp +421 -391
- data/source/bzs/netsvc/server/serverCpt.h +41 -43
- data/source/bzs/netsvc/server/serverPipe.cpp +580 -565
- data/source/bzs/netsvc/server/serverPipe.h +44 -45
- data/source/bzs/netsvc/server/serverTpool.cpp +333 -303
- data/source/bzs/netsvc/server/serverTpool.h +38 -43
- data/source/bzs/rtl/benchmark.cpp +91 -31
- data/source/bzs/rtl/benchmark.h +76 -22
- data/source/bzs/rtl/datetime.cpp +231 -233
- data/source/bzs/rtl/datetime.h +16 -16
- data/source/bzs/rtl/debuglog.cpp +48 -51
- data/source/bzs/rtl/debuglog.h +55 -44
- data/source/bzs/rtl/exception.h +55 -48
- data/source/bzs/rtl/stl_uty.cpp +27 -28
- data/source/bzs/rtl/stl_uty.h +28 -29
- data/source/bzs/rtl/stringBuffers.cpp +8 -6
- data/source/bzs/rtl/stringBuffers.h +16 -9
- data/source/bzs/rtl/strtrim.cpp +90 -91
- data/source/bzs/rtl/strtrim.h +14 -16
- data/source/bzs/test/tdclatl/bench_query_atl.js +647 -0
- data/source/bzs/test/tdclatl/bench_tdclatl.js +303 -303
- data/source/bzs/test/tdclatl/test_query_atl.js +669 -0
- data/source/bzs/test/tdclphp/bench.php +357 -0
- data/source/bzs/test/tdclphp/transactd_Test.php +907 -303
- data/source/bzs/test/tdclphp/transactd_blob_Test.php +21 -49
- data/source/bzs/test/tdclphp/transactd_datetime_Test.php +41 -75
- data/source/bzs/test/tdclphp/transactd_kanjischema_Test.php +23 -37
- data/source/bzs/test/tdclphp/transactd_pool_Test.php +120 -0
- data/source/bzs/test/tdclrb/bench_tdclcpp.rb +4 -6
- data/source/bzs/test/tdclrb/prepare.rb +15 -12
- data/source/bzs/test/tdclrb/transactd_blob_spec.rb +29 -32
- data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +0 -29
- data/source/bzs/test/tdclrb/transactd_kanjischema_spec.rb +18 -19
- data/source/bzs/test/tdclrb/transactd_pool_spec.rb +107 -0
- data/source/bzs/test/tdclrb/transactd_spec.rb +734 -142
- data/source/bzs/test/transactdBench/query_bench.cpp +156 -0
- data/source/bzs/test/transactdBench/scaling_bench.cpp +265 -0
- data/source/bzs/test/transactdBench/transactdBench.cpp +107 -83
- data/source/bzs/test/transactdBench/transactdBench2.cpp +122 -83
- data/source/bzs/test/transactdBench/workerBase.cpp +5 -0
- data/source/bzs/test/transactdBench/workerBase.h +88 -0
- data/source/bzs/test/transactdBench/workerMySQLImple.h +333 -0
- data/source/bzs/test/transactdBench/workerTransactdImple.h +201 -0
- data/source/bzs/test/trdclengn/test_blob.cpp +121 -73
- data/source/bzs/test/trdclengn/test_trdclengn.cpp +1244 -426
- data/source/global/ormsrcgen/confParam.h +80 -0
- data/source/global/ormsrcgen/fieldName.cpp +77 -0
- data/source/global/ormsrcgen/fieldName.h +43 -0
- data/source/global/ormsrcgen/main.cpp +196 -0
- data/source/global/ormsrcgen/srcgen.cpp +763 -0
- data/source/global/ormsrcgen/srcgen.h +72 -0
- data/source/global/ormsrcgen/template/fieldNameList_sample.txt +2 -0
- data/source/global/ormsrcgen/template/ormDataClass_template.cpp +48 -0
- data/source/global/ormsrcgen/template/ormDataClass_template.h +34 -0
- data/source/global/ormsrcgen/template/ormMapClass_template.cpp +51 -0
- data/source/global/ormsrcgen/template/ormMapClass_template.h +62 -0
- data/source/global/ormsrcgen/template/template.cnf +38 -0
- data/source/global/querystmts/querystmts.cpp +237 -0
- data/source/global/tdclatl/ConnectParams.cpp +77 -0
- data/source/global/tdclatl/ConnectParams.h +70 -0
- data/source/global/tdclatl/Database.cpp +132 -128
- data/source/global/tdclatl/Database.h +60 -49
- data/source/global/tdclatl/DbDef.cpp +68 -64
- data/source/global/tdclatl/DbDef.h +36 -36
- data/source/global/tdclatl/Field.cpp +12 -17
- data/source/global/tdclatl/Field.h +15 -12
- data/source/global/tdclatl/FieldDef.cpp +75 -36
- data/source/global/tdclatl/FieldDef.h +38 -19
- data/source/global/tdclatl/FieldDefs.cpp +74 -0
- data/source/global/tdclatl/FieldDefs.h +56 -0
- data/source/global/tdclatl/FieldNames.cpp +99 -0
- data/source/global/tdclatl/FieldNames.h +66 -0
- data/source/global/tdclatl/Flags.cpp +75 -37
- data/source/global/tdclatl/Flags.h +13 -12
- data/source/global/tdclatl/GroupQuery.cpp +119 -0
- data/source/global/tdclatl/GroupQuery.h +65 -0
- data/source/global/tdclatl/KeyDef.cpp +15 -14
- data/source/global/tdclatl/KeyDef.h +20 -17
- data/source/global/tdclatl/KeySegment.cpp +13 -12
- data/source/global/tdclatl/PooledDbManager.cpp +223 -0
- data/source/global/tdclatl/PooledDbManager.h +76 -0
- data/source/global/tdclatl/QueryBase.cpp +206 -127
- data/source/global/tdclatl/QueryBase.h +55 -59
- data/source/global/tdclatl/Record.cpp +214 -0
- data/source/global/tdclatl/Record.h +96 -0
- data/source/global/tdclatl/Recordset.cpp +278 -0
- data/source/global/tdclatl/Recordset.h +83 -0
- data/source/global/tdclatl/RecordsetQuery.cpp +118 -0
- data/source/global/tdclatl/RecordsetQuery.h +126 -0
- data/source/global/tdclatl/Table.cpp +57 -60
- data/source/global/tdclatl/Table.h +32 -29
- data/source/global/tdclatl/TableDef.cpp +63 -62
- data/source/global/tdclatl/TableDef.h +20 -22
- data/source/global/tdclatl/TdVersion.cpp +3 -3
- data/source/global/tdclatl/TdVersion.h +15 -11
- data/source/global/tdclatl/_IDatabaseEvents_CP.h +99 -92
- data/source/global/tdclatl/activeTable.cpp +355 -0
- data/source/global/tdclatl/activeTable.h +79 -0
- data/source/global/tdclatl/dllmain.cpp +4 -3
- data/source/global/tdclatl/dllmain.h +7 -6
- data/source/global/tdclatl/keySegment.h +22 -18
- data/source/global/tdclatl/resource.h +0 -0
- data/source/global/tdclatl/stdafx.h +6 -4
- data/source/global/tdclatl/targetver.h +0 -1
- data/source/global/tdclatl/tdclatl.cpp +10 -5
- data/source/global/tdclatl/tdclatl.idl +530 -14
- data/source/linux/charsetConvert.h +78 -79
- data/source/linux/linuxTypes.h +9 -12
- data/source/linux/tchar.h +168 -166
- data/transactd.gemspec +24 -16
- metadata +98 -12
- data/bin/common/tdclc_32_1_2.dll +0 -0
- data/bin/common/tdclc_64_1_2.dll +0 -0
- data/build/tdclc/tdclc_32.cbproj +0 -173
- data/build/tdclcpp/tdclcpp_bcb_32.cbproj +0 -232
- data/build/tdclrb/GEM_VERSION +0 -3
- data/source/bzs/db/protocol/tdap/client/filter.cpp +0 -43
- data/source/bzs/example/useORM.cpp +0 -585
|
@@ -1,585 +0,0 @@
|
|
|
1
|
-
#include <bzs/db/protocol/tdap/client/trdboostapi.h>
|
|
2
|
-
#include <iostream>
|
|
3
|
-
#include <vector>
|
|
4
|
-
#include <bzs/db/protocol/tdap/client/trdormapi.h>
|
|
5
|
-
#include <boost/iterator/iterator_facade.hpp>
|
|
6
|
-
|
|
7
|
-
using namespace bzs::db::protocol::tdap::client;
|
|
8
|
-
using namespace bzs::db::protocol::tdap;
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
@brief Read records and manual O/R mapping example
|
|
12
|
-
|
|
13
|
-
This program read records of the "user" table where group = 3.
|
|
14
|
-
And O/R mapping to the user class.
|
|
15
|
-
This program use the filter operation on server side.
|
|
16
|
-
|
|
17
|
-
Please execute "create database" , "change schema" and "insert records" example
|
|
18
|
-
before execute this example.
|
|
19
|
-
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
static const char_td keynum_group = 1;
|
|
24
|
-
static const char_td primary_key = 0;
|
|
25
|
-
|
|
26
|
-
class group
|
|
27
|
-
{
|
|
28
|
-
int m_id;
|
|
29
|
-
std::string m_name;
|
|
30
|
-
protected:
|
|
31
|
-
group(void* owner):m_id(0){}
|
|
32
|
-
public:
|
|
33
|
-
|
|
34
|
-
int id() const {return m_id;}
|
|
35
|
-
const std::string& name() const {return m_name;}
|
|
36
|
-
void setId(int v){m_id = v;}
|
|
37
|
-
void setName(const char* v){m_name = v;}
|
|
38
|
-
static group* create(void* owner){return new group(owner);};
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
typedef boost::shared_ptr<group> group_ptr;
|
|
44
|
-
typedef std::vector<group_ptr> group_ptr_list;
|
|
45
|
-
typedef std::vector<group*> group_list;
|
|
46
|
-
typedef boost::shared_ptr<group_list> group_list_ptr;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
group* create(group_ptr_list& m, int){return group::create(&m);}
|
|
51
|
-
|
|
52
|
-
class group_fdi
|
|
53
|
-
{
|
|
54
|
-
|
|
55
|
-
public:
|
|
56
|
-
short id;
|
|
57
|
-
short name;
|
|
58
|
-
|
|
59
|
-
//table*�������ɂƂ�init�����Ȃ���Ȃ�Ȃ�
|
|
60
|
-
void init(table* tb)
|
|
61
|
-
{
|
|
62
|
-
id = tb->fieldNumByName(_T("id"));
|
|
63
|
-
name = tb->fieldNumByName(_T("name"));
|
|
64
|
-
}
|
|
65
|
-
//�C���X�^���X��Ԃ�static �� create�����Ȃ���Ȃ�Ȃ�
|
|
66
|
-
//static group_fdi* create(){return new group_fdi();};
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
group_fdi* createFdi(group_fdi *){return new group_fdi();}
|
|
70
|
-
void destroyFdi(group_fdi * p){delete p;}
|
|
71
|
-
void initFdi(group_fdi * fdi, table* tb){fdi->init(tb);}
|
|
72
|
-
|
|
73
|
-
class group_orm
|
|
74
|
-
{
|
|
75
|
-
const group_fdi& m_fdi;
|
|
76
|
-
|
|
77
|
-
public:
|
|
78
|
-
|
|
79
|
-
/* mdl_typename���`���Ȃ���Ȃ�Ȃ�*/
|
|
80
|
-
typedef group mdl_typename;
|
|
81
|
-
|
|
82
|
-
/* fdi_typename���`���Ȃ���Ȃ�Ȃ�
|
|
83
|
-
fdi���g�p���Ȃ��ꍇ�̓f�t�H���g��typedef fdibase fdi_typename; �Ƃ��邱��
|
|
84
|
-
���ƂȂ�FDI���g�p����ꍇ��activeTable<group, group_fdi>�̂悤��
|
|
85
|
-
activeTable�̃C���X�^���X�쐬����fdi�̌^���w�肷�� */
|
|
86
|
-
typedef group_fdi fdi_typename;
|
|
87
|
-
|
|
88
|
-
/* fdi_typename fdi&�������Ɏ��R���X�g���N�^���K�{ */
|
|
89
|
-
group_orm(const fdi_typename& fdi):m_fdi(fdi){}
|
|
90
|
-
|
|
91
|
-
/* ���j�[�N�L�[�����Ă�Ȃ��Ȃ��̂ł��̑��̃L�[���͒�`���Ȃ��Ă悢*/
|
|
92
|
-
bool compKeyValue(group& l, group& r, int keyNum) const
|
|
93
|
-
{
|
|
94
|
-
return l.id() < r.id();
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
void setKeyValues(group& g, const fields& fds, int keyNum)
|
|
98
|
-
{
|
|
99
|
-
fds[m_fdi.id] = g.id();
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
void writeMap(group& g, const fields& fds, int optipn)
|
|
103
|
-
{
|
|
104
|
-
fds[m_fdi.id] = g.id();
|
|
105
|
-
fds[m_fdi.name] = g.name();
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
void readMap(group& g, const fields& fds, int optipn)
|
|
109
|
-
{
|
|
110
|
-
g.setId(fds[m_fdi.id].i());
|
|
111
|
-
g.setName(fds[m_fdi.name].a_str()); //get by ansi string
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
void readAuntoincValue(group& g, const fields& fds, int optipn)
|
|
115
|
-
{
|
|
116
|
-
g.setId(fds[m_fdi.id].i());
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/* �N���X������e�[�u�������������߂̊�getTableName���K�{ */
|
|
120
|
-
const _TCHAR* getTableName(){return _T("group1");}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
};
|
|
125
|
-
|
|
126
|
-
/** User class */
|
|
127
|
-
class user
|
|
128
|
-
{
|
|
129
|
-
mutable group* m_grp;
|
|
130
|
-
int m_id;
|
|
131
|
-
std::string m_name;
|
|
132
|
-
std::string m_tel;
|
|
133
|
-
protected:
|
|
134
|
-
user(void* owner):m_grp(NULL),m_id(0){}
|
|
135
|
-
public:
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
group* grp()const
|
|
139
|
-
{
|
|
140
|
-
if (m_grp == NULL)
|
|
141
|
-
m_grp = group::create(0);
|
|
142
|
-
return m_grp;
|
|
143
|
-
}
|
|
144
|
-
int id() const {return m_id;}
|
|
145
|
-
const std::string& name() const {return m_name;}
|
|
146
|
-
const std::string& tel() const {return m_tel;}
|
|
147
|
-
void setId(int v){m_id = v;}
|
|
148
|
-
void setName(const char* v){m_name = v;}
|
|
149
|
-
void setTel(const char* v){m_tel = v;}
|
|
150
|
-
|
|
151
|
-
//�R���N�V��������ŕK�{�̊��@owner�ɂ̓R���N�V�����̃|�C���^���n����܂��B
|
|
152
|
-
|
|
153
|
-
static user* create(void* owner){return new user(owner);};
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
};
|
|
157
|
-
|
|
158
|
-
typedef boost::shared_ptr<user> user_ptr;
|
|
159
|
-
typedef std::vector<user_ptr> user_ptr_list;
|
|
160
|
-
typedef std::vector<user*> user_list;
|
|
161
|
-
typedef boost::shared_ptr<user_list> user_list_ptr;
|
|
162
|
-
|
|
163
|
-
/* �C�e���[�^������͖̂ʓ|������ǂ��A���܂��܂ȃA���S���Y�����g�����Ƃ��l�����
|
|
164
|
-
�쐬����̂��x�^�[
|
|
165
|
-
*/
|
|
166
|
-
/*class mdls;
|
|
167
|
-
class mdlsIterator : public std::iterator<std::random_access_iterator_tag, user*>
|
|
168
|
-
{
|
|
169
|
-
int m_index;
|
|
170
|
-
mdls& m_mdls;
|
|
171
|
-
public:
|
|
172
|
-
//mdlsIterator():m_mdls(*((mdls*)0)){};
|
|
173
|
-
mdlsIterator(mdls& m, int index=0);
|
|
174
|
-
//mdlsIterator& operator=(const mdlsIterator &r) ;
|
|
175
|
-
user* operator*() const;
|
|
176
|
-
mdlsIterator &operator++();
|
|
177
|
-
bool operator!=(const mdlsIterator &r) const;
|
|
178
|
-
//mdlsIterator& operator-(const mdlsIterator &r);
|
|
179
|
-
//mdlsIterator& operator+(const mdlsIterator &r);
|
|
180
|
-
};*/
|
|
181
|
-
|
|
182
|
-
class mdls;
|
|
183
|
-
|
|
184
|
-
/*user* mdlsIterator::operator*() const{return m_mdls[m_index];}
|
|
185
|
-
mdlsIterator& mdlsIterator::operator++() {++m_index; return *this;}
|
|
186
|
-
bool mdlsIterator::operator!=(const mdlsIterator &r) const {return m_index != r.m_index;}
|
|
187
|
-
*/
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
class mdlsIterator
|
|
191
|
-
: public boost::iterator_facade<mdlsIterator, user*
|
|
192
|
-
, boost::random_access_traversal_tag>
|
|
193
|
-
{
|
|
194
|
-
friend class boost::iterator_core_access;
|
|
195
|
-
size_t m_index;
|
|
196
|
-
mdls* m_mdls;
|
|
197
|
-
user*& dereference() const;
|
|
198
|
-
void increment();
|
|
199
|
-
void decrement();
|
|
200
|
-
void advance(size_t n);
|
|
201
|
-
size_t distance_to(const mdlsIterator &r)const;
|
|
202
|
-
bool equal(const mdlsIterator &r) const;
|
|
203
|
-
|
|
204
|
-
public:
|
|
205
|
-
mdlsIterator(mdls* m, int index=0);
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
};
|
|
209
|
-
|
|
210
|
-
class mdls
|
|
211
|
-
{
|
|
212
|
-
mutable std::vector<user*> m_users;
|
|
213
|
-
public:
|
|
214
|
-
void clear(){m_users.clear();}
|
|
215
|
-
user* add(user* u)
|
|
216
|
-
{
|
|
217
|
-
m_users.push_back(u);
|
|
218
|
-
return u;
|
|
219
|
-
}
|
|
220
|
-
user*& item(int index)const {return m_users[index];}
|
|
221
|
-
//user** item_ptr(int index)const {return &(m_users[index]);}
|
|
222
|
-
/** �I���W�i���R���N�V�����̏ꍇ�͈ȉ��̂R�̊���
|
|
223
|
-
�A�C�e���̊i�[�^������item_type����������
|
|
224
|
-
���̒lj�������ȏꍇ��adapter������Ă��������B
|
|
225
|
-
*/
|
|
226
|
-
|
|
227
|
-
size_t size(){return m_users.size();}
|
|
228
|
-
user* operator[](unsigned int index)const{return item(index);}
|
|
229
|
-
|
|
230
|
-
/*
|
|
231
|
-
�ȉ��̂Q��typedef��������K�v������
|
|
232
|
-
typedef�̓C���^�t�F�[�X�ɉe�����Ȃ��̂ŁA�ˑ��R�[�h�̍ăR���p�C���͕s�v�ł�
|
|
233
|
-
*/
|
|
234
|
-
typedef user* item_type; //�ێ�����^���w��ł��邪 vector�Ő��̏ꍇ�͎w�肷����@���Ȃ�
|
|
235
|
-
typedef mdlsIterator iterator;//�K�{
|
|
236
|
-
/*
|
|
237
|
-
push_back() begin() end()��(�C���^�t�F�[�X�̕ύX���̂�����ꍇ)
|
|
238
|
-
�������Ă����Ȃ��Ă��ǂ��B���Ȃ��ꍇ�� bzs::db::protocol::tdap::client���O��Ԃ�
|
|
239
|
-
���ꉻ����
|
|
240
|
-
template <>
|
|
241
|
-
mdlsIterator push_back(mdls& m);
|
|
242
|
-
mdlsIterator begin(mdls& m);
|
|
243
|
-
mdlsIterator end(mdls& m);
|
|
244
|
-
�̂R�̊����쐬����B
|
|
245
|
-
*/
|
|
246
|
-
//void push_back(user* u){add(u);}
|
|
247
|
-
//mdlsIterator begin(){return mdlsIterator(*this, 0);}
|
|
248
|
-
//mdlsIterator end(){return mdlsIterator(*this, size());}
|
|
249
|
-
|
|
250
|
-
};
|
|
251
|
-
|
|
252
|
-
/* mdlsIterator�̎��� */
|
|
253
|
-
/*mdlsIterator::mdlsIterator(mdls& m, int index):m_index(index),m_mdls(m){};
|
|
254
|
-
user* mdlsIterator::operator*() const{return m_mdls[m_index];}
|
|
255
|
-
mdlsIterator& mdlsIterator::operator++() {++m_index; return *this;}
|
|
256
|
-
bool mdlsIterator::operator!=(const mdlsIterator &r) const {return m_index != r.m_index;}
|
|
257
|
-
*/
|
|
258
|
-
void dumpUser2(const user* user)
|
|
259
|
-
{
|
|
260
|
-
std::cout << " id " << user->id() << std::endl;
|
|
261
|
-
std::cout << " name " << user->name() << std::endl;
|
|
262
|
-
std::cout << " group " << user->grp()->name() << std::endl;
|
|
263
|
-
std::cout << " tel " << user->tel() << std::endl << std::endl;
|
|
264
|
-
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
user*& mdlsIterator::dereference() const
|
|
269
|
-
{
|
|
270
|
-
//for (int i=0;i<m_mdls->size();++i)
|
|
271
|
-
// dumpUser2((*m_mdls)[i]);
|
|
272
|
-
|
|
273
|
-
return m_mdls->item(m_index);
|
|
274
|
-
//return p;
|
|
275
|
-
}
|
|
276
|
-
void mdlsIterator::increment() {++m_index;}
|
|
277
|
-
void mdlsIterator::decrement() {--m_index;}
|
|
278
|
-
void mdlsIterator::advance(size_t n){m_index+=n;}
|
|
279
|
-
size_t mdlsIterator::distance_to(const mdlsIterator &r)const{return r.m_index - m_index;}
|
|
280
|
-
bool mdlsIterator::equal(const mdlsIterator &r) const {return m_index == r.m_index;}
|
|
281
|
-
mdlsIterator::mdlsIterator(mdls* m, int index):m_index(index),m_mdls(m){}
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
//�I���W�i���R���N�V������push_back begin end�@���������Ȃ��ꍇ�͈ȉ��̖��O
|
|
286
|
-
//��Ԃɂ��ꂼ��̊����쐬����
|
|
287
|
-
namespace bzs{namespace db{namespace protocol{namespace tdap{namespace client
|
|
288
|
-
{
|
|
289
|
-
|
|
290
|
-
inline mdlsIterator begin(mdls& m){return mdlsIterator(&m, 0);}
|
|
291
|
-
|
|
292
|
-
inline mdlsIterator end(mdls& m){return mdlsIterator(&m, m.size());}
|
|
293
|
-
|
|
294
|
-
inline void push_back(mdls& m, user* u){m.add(u);}
|
|
295
|
-
}}}}}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
user* create(mdls& m, int){return user::create(&m);}
|
|
299
|
-
user* create(user_ptr_list& m, int){return user::create(&m);}
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
class user_fdi //: public fdibase
|
|
304
|
-
{
|
|
305
|
-
|
|
306
|
-
public:
|
|
307
|
-
short id;
|
|
308
|
-
short name;
|
|
309
|
-
short tel;
|
|
310
|
-
short group;
|
|
311
|
-
void init(table* tb)
|
|
312
|
-
{
|
|
313
|
-
id = tb->fieldNumByName(_T("id"));
|
|
314
|
-
name = tb->fieldNumByName(_T("name"));
|
|
315
|
-
tel = tb->fieldNumByName(_T("tel"));
|
|
316
|
-
group = tb->fieldNumByName(_T("group"));
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
//static user_fdi* create(){return new user_fdi();}
|
|
320
|
-
};
|
|
321
|
-
|
|
322
|
-
user_fdi* createFdi(user_fdi *){return new user_fdi();}
|
|
323
|
-
void destroyFdi(user_fdi * p){delete p;}
|
|
324
|
-
void initFdi(user_fdi * fdi, table* tb){fdi->init(tb);}
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
class user_orm
|
|
328
|
-
{
|
|
329
|
-
const user_fdi& m_fdi;
|
|
330
|
-
|
|
331
|
-
public:
|
|
332
|
-
user_orm(const user_fdi& fdi):m_fdi(fdi){}
|
|
333
|
-
|
|
334
|
-
bool compKeyValue(user& l, user& r, int keyNum) const
|
|
335
|
-
{
|
|
336
|
-
if (keyNum==0)
|
|
337
|
-
return l.id() < r.id();
|
|
338
|
-
return 1;
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
void setKeyValues(user& u, const fields& fds, int keyNum)
|
|
342
|
-
{
|
|
343
|
-
fds[m_fdi.id] = u.id();
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
void writeMap(user& u, const fields& fds, int optipn)
|
|
347
|
-
{
|
|
348
|
-
fds[m_fdi.id] = u.id();
|
|
349
|
-
fds[m_fdi.name] = u.name();
|
|
350
|
-
fds[m_fdi.tel] = u.tel();
|
|
351
|
-
fds[m_fdi.group] = u.grp()->id();
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
void readMap(user& u, const fields& fds, int optipn)
|
|
355
|
-
{
|
|
356
|
-
u.setId(fds[m_fdi.id].i());
|
|
357
|
-
u.setName(fds[m_fdi.name].a_str()); //get by ansi string
|
|
358
|
-
u.setTel(fds[m_fdi.tel].a_str()); //get by ansi string
|
|
359
|
-
u.grp()->setId(fds[m_fdi.group].i());
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
void readAuntoincValue(user& u, const fields& fds, int optipn)
|
|
363
|
-
{
|
|
364
|
-
u.setId(fds[m_fdi.id].i());
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
/* �N���X������e�[�u�������������߂̊�getTableName���K�{ */
|
|
368
|
-
const _TCHAR* getTableName(){return _T("user");}
|
|
369
|
-
|
|
370
|
-
typedef user mdl_typename;
|
|
371
|
-
typedef user_fdi fdi_typename;
|
|
372
|
-
|
|
373
|
-
/* �I���W�i���R���N�V�����������Ƃ��ɒ�`����
|
|
374
|
-
�ŏ��̌^�͂��̃}�b�v�N���X�A2�Ԗڂ̌^�̓R���N�V�����N���X
|
|
375
|
-
���ꂪ��`����Ă��Ă�vector<shared_ptr<T>>�̃R���N�V������
|
|
376
|
-
�������Ɏg���܂��B
|
|
377
|
-
*/
|
|
378
|
-
typedef mdlsHandler<user_orm, mdls> collection_orm_typename;
|
|
379
|
-
|
|
380
|
-
};
|
|
381
|
-
|
|
382
|
-
typedef user_orm::collection_orm_typename users_orm;
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
int isMatch(const fields& fds)
|
|
386
|
-
{
|
|
387
|
-
return filter_validate_value;
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
/** dump user to screen */
|
|
391
|
-
void dumpUser(const user_ptr& user)
|
|
392
|
-
{
|
|
393
|
-
std::cout << " id " << user->id() << std::endl;
|
|
394
|
-
std::cout << " name " << user->name() << std::endl;
|
|
395
|
-
std::cout << " group " << user->grp()->name() << std::endl;
|
|
396
|
-
std::cout << " tel " << user->tel() << std::endl << std::endl;
|
|
397
|
-
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
bool sortFunc2(const user* l, const user* r)
|
|
401
|
-
{
|
|
402
|
-
|
|
403
|
-
return l->name() < r->name();
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
void readUsers(databaseManager& db, std::vector<user_ptr>& users)
|
|
407
|
-
{
|
|
408
|
-
int id = 12;
|
|
409
|
-
int find_group_id = 3;
|
|
410
|
-
bool readMyKeyValue = false;
|
|
411
|
-
// user_orm��activeTable�̃C���X�^���X���쐬���܂��B
|
|
412
|
-
activeTable<user_orm> ut(db);
|
|
413
|
-
|
|
414
|
-
//id=12�̃��[�U�[���쐬���܂��B
|
|
415
|
-
user_ptr u(user::create(0));
|
|
416
|
-
u->setId(id);
|
|
417
|
-
u->setName("moriwaki");
|
|
418
|
-
u->setTel("81-999-9999");
|
|
419
|
-
u->grp()->setId(1);
|
|
420
|
-
ut.index(primary_key);
|
|
421
|
-
ut.save(*u);
|
|
422
|
-
|
|
423
|
-
//id=12�̃��[�U�[��ǂݎ��
|
|
424
|
-
ut.read(*u);
|
|
425
|
-
|
|
426
|
-
//id=12�̃��[�U�[�̓d�b�ԍ��̕ύX
|
|
427
|
-
u->setTel("81-999-8888");
|
|
428
|
-
ut.update(*u);
|
|
429
|
-
|
|
430
|
-
//�L�[�l��ς���Ƃ���
|
|
431
|
-
ut.index(primary_key).keyValue(u->id());
|
|
432
|
-
u->setId(13);
|
|
433
|
-
ut.update(*u, readMyKeyValue);
|
|
434
|
-
|
|
435
|
-
//id=13�̃��[�U�[�폜
|
|
436
|
-
ut.del(*u);
|
|
437
|
-
|
|
438
|
-
//�폜�̓L�[�l�����ł�OK
|
|
439
|
-
ut.index(primary_key).keyValue(12).del(); //�G���[�@���R�[�h�Ȃ�
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
//�J�[�\����index�ƃL�[�ʒu���w�肵�܂��B
|
|
444
|
-
//�������烌�R�[�h�̌������J�n���܂��B
|
|
445
|
-
ut.index(keynum_group).keyValue(find_group_id);
|
|
446
|
-
|
|
447
|
-
//�����������w�肵�܂��B�T�[�o�[�t�B���^�[�ł��B
|
|
448
|
-
//reject�Ŏw�肵���A���}�b�`���R�[�h���ɂȂ�ƌ����𒆎~���܂��B
|
|
449
|
-
query q;
|
|
450
|
-
q.select(_T("*")).where(_T("group"), _T("=") , find_group_id)//.or(_T("group"), _T("=") , _T("a"))
|
|
451
|
-
.reject(1);
|
|
452
|
-
|
|
453
|
-
//�ǂݎ������s�B�@���ʂ����R���N�V�����ƃN�G���[��n���܂��B
|
|
454
|
-
ut.read(users, q);
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
/*
|
|
458
|
-
�O���reads�Ŏg�p�����R���N�V������vector�ł����B�������I���W�i����
|
|
459
|
-
�R���N�V�������g�p���Ă���ꍇ������ł��傤
|
|
460
|
-
user_orm�ɃI���W�i���R���N�V�����}�b�v�̌^collection_orm_typename��
|
|
461
|
-
�m�点�Ă����Ύ����ŃC���X�^���X���쐬���n���h�����Ă���܂�*/
|
|
462
|
-
|
|
463
|
-
mdls m;
|
|
464
|
-
ut.index(keynum_group).keyValue(find_group_id).read(m, q);
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
/*
|
|
468
|
-
�I���W�i���R���N�V�����}�b�v�������ō쐬�łȂ������ŏ���������
|
|
469
|
-
�g���������Ƃ�����ł��傤���̎���readsBy���g�p���܂�*/
|
|
470
|
-
|
|
471
|
-
users_orm users_hdr(m);
|
|
472
|
-
ut.readRange(users_hdr, q);
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
/* �N���C�A���g���t�B���^�[���ȒP�Ɏg���܂��B
|
|
476
|
-
isMatch���̂悤�ȁ@const fields&�������Ɏ����int��Ԃ����Ȃ牽�ł�
|
|
477
|
-
OK�ł��B
|
|
478
|
-
*/
|
|
479
|
-
ut.index(keynum_group).keyValue(find_group_id).read(users, q, isMatch);
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
//group�̓ǂݎ��
|
|
484
|
-
group_ptr grp(group::create(0));
|
|
485
|
-
|
|
486
|
-
activeTable<group_orm> gt(db);
|
|
487
|
-
//shared_ptr<group>�̃C���X�^���X��*�����ēn���܂��B
|
|
488
|
-
gt.index(0).keyValue(2).read(*grp);
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
/*
|
|
493
|
-
���|�C���^�̃|�C���^�̎��� *�����ēn���܂��B
|
|
494
|
-
shared_ptr�ł����|�C���^�ł�*�����ē����悤�ɓn���܂��B
|
|
495
|
-
*/
|
|
496
|
-
group* g = group::create(0);
|
|
497
|
-
gt.read(*g);
|
|
498
|
-
delete g;
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
//--------------------------------------------------------
|
|
502
|
-
// Join�̂悤�ȏ���
|
|
503
|
-
//--------------------------------------------------------
|
|
504
|
-
/*
|
|
505
|
-
users����O���[�v�̃��X�g���쐬����user�Ɋ֘A�t�����O���[�v
|
|
506
|
-
��ǂݎ��܂��B
|
|
507
|
-
list���ɃR���N�V������user->grp()���̃A�h���X��n���܂��B
|
|
508
|
-
activeTable<group_orm>��readEach���ɂ��̃��X�g��n���܂��B
|
|
509
|
-
*/
|
|
510
|
-
query qe;
|
|
511
|
-
group_list_ptr grps(listup(users, &user::grp));
|
|
512
|
-
gt.index(primary_key).readEach(*grps, qe.select(_T("id"), _T("name")));
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
//�I���W�i���̃O���[�v���X�g�ł�listup���͎g���܂��B
|
|
516
|
-
group_list_ptr grps2(listup(m, &user::grp));
|
|
517
|
-
gt.index(primary_key).readEach(*grps2, qe);
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
//listup���������Ď����ōs��
|
|
521
|
-
gt.index(primary_key);
|
|
522
|
-
gt.readEach(users, &user::grp, qe.select(_T("id"), _T("name")));
|
|
523
|
-
gt.readEach(m, &user::grp, qe);
|
|
524
|
-
|
|
525
|
-
//IN
|
|
526
|
-
gt.index(primary_key);
|
|
527
|
-
qe.reset();
|
|
528
|
-
std::vector<group_ptr> gmdls;
|
|
529
|
-
gt.read(gmdls, qe.select(_T("id"), _T("name")).in(1, 2, 3));
|
|
530
|
-
|
|
531
|
-
//orderby
|
|
532
|
-
users.clear();
|
|
533
|
-
ut.index(0).keyValue(0).read(users, q.all());
|
|
534
|
-
sort(users, &user::name, &user::id);
|
|
535
|
-
|
|
536
|
-
//groupby
|
|
537
|
-
//����l�����o����
|
|
538
|
-
|
|
539
|
-
//�\�[�g�Ή��̃C�e���[�^�͑�ςł��B
|
|
540
|
-
m.clear();
|
|
541
|
-
ut.index(0).keyValue(0).read(m, q);
|
|
542
|
-
|
|
543
|
-
sort(m, &user::name);
|
|
544
|
-
std::sort(begin(m), end(m), &sortFunc2);
|
|
545
|
-
|
|
546
|
-
std::for_each(begin(m), end(m), dumpUser2);
|
|
547
|
-
|
|
548
|
-
//�e�[�u�������̑���
|
|
549
|
-
table_ptr tb = ut.table();
|
|
550
|
-
tb->clearOwnerName();
|
|
551
|
-
}
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
#pragma argsused
|
|
555
|
-
int _tmain(int argc, _TCHAR* argv[])
|
|
556
|
-
{
|
|
557
|
-
database_ptr db = createDatadaseObject();
|
|
558
|
-
try
|
|
559
|
-
{
|
|
560
|
-
connectParams param(_T("tdap"), _T("localhost"), _T("test"), _T("test"));
|
|
561
|
-
openDatabase(db, param);
|
|
562
|
-
|
|
563
|
-
databaseManager mgr(db);
|
|
564
|
-
std::vector<user_ptr> users;
|
|
565
|
-
|
|
566
|
-
readUsers(mgr, users);
|
|
567
|
-
std::cout << "Read records success.\nRecord count = " << users.size() << std::endl;
|
|
568
|
-
|
|
569
|
-
//dump users to screen.
|
|
570
|
-
std::for_each(users.begin(), users.end(), dumpUser);
|
|
571
|
-
|
|
572
|
-
return 0;
|
|
573
|
-
}
|
|
574
|
-
|
|
575
|
-
catch(bzs::rtl::exception& e)
|
|
576
|
-
{
|
|
577
|
-
std::tcout << *bzs::rtl::getMsg(e) << std::endl;
|
|
578
|
-
}
|
|
579
|
-
return 1;
|
|
580
|
-
}
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|