transactd 1.0.1

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.
Files changed (218) hide show
  1. checksums.yaml +7 -0
  2. data/BUILD_UNIX-JA +174 -0
  3. data/BUILD_WIN-JA +256 -0
  4. data/CMakeLists.txt +96 -0
  5. data/COPYING +339 -0
  6. data/README +406 -0
  7. data/README-JA +424 -0
  8. data/bin/common/tdclc_32_1_0.dll +0 -0
  9. data/bin/common/tdclc_64_1_0.dll +0 -0
  10. data/build/common/check_for_link_iconv.cmake +73 -0
  11. data/build/common/copyifgreater.cmd +30 -0
  12. data/build/common/copyifgreater.js +290 -0
  13. data/build/common/get_boost_libs.cmake +106 -0
  14. data/build/common/get_ruby_path.cmake +115 -0
  15. data/build/common/options.cmake +127 -0
  16. data/build/common/smart_install.cmake +263 -0
  17. data/build/common/system.cmake +122 -0
  18. data/build/common/transactd.rc.in +52 -0
  19. data/build/common/transactd_cl_common.cmake +101 -0
  20. data/build/common/transactd_cl_output.cmake +93 -0
  21. data/build/common/transactd_common.cmake +237 -0
  22. data/build/common/transactd_required.cmake +28 -0
  23. data/build/swig/ruby/generate.cmake.in +35 -0
  24. data/build/swig/ruby/generate.cmd.in +19 -0
  25. data/build/swig/ruby/ruby.swg +101 -0
  26. data/build/swig/tdcl.i +188 -0
  27. data/build/tdclc/BUILDNUMBER.txt +1 -0
  28. data/build/tdclc/CMakeLists.txt +170 -0
  29. data/build/tdclc/tdclc_32.cbproj +181 -0
  30. data/build/tdclc/tdclc_64.cbproj +205 -0
  31. data/build/tdclcpp/BUILDNUMBER.txt +1 -0
  32. data/build/tdclcpp/CMakeLists.txt +142 -0
  33. data/build/tdclcpp/tdclcpp_bcb_32.cbproj +239 -0
  34. data/build/tdclcpp/tdclcpp_bcb_64.cbproj +304 -0
  35. data/build/tdclrb/BUILDNUMBER.txt +1 -0
  36. data/build/tdclrb/CMakeLists.txt +258 -0
  37. data/build/tdclrb/GEM_VERSION +3 -0
  38. data/build/tdclrb/bldgem/extconf.rb +123 -0
  39. data/build/tdclrb/gem/INSTALLLOG.win32 +9 -0
  40. data/build/tdclrb/gem/Makefile.win32-VS +65 -0
  41. data/build/tdclrb/gem/Makefile.win32-prebuilt +48 -0
  42. data/build/tdclrb/gem/detect.rb +31 -0
  43. data/build/tdclrb/gem/helper.rb +113 -0
  44. data/build/tdclrb/gem/transactd.rb +22 -0
  45. data/build/tdclrb/gem_output.cmake +44 -0
  46. data/source/bzs/db/IBlobBuffer.h +51 -0
  47. data/source/bzs/db/blobBuffer.h +177 -0
  48. data/source/bzs/db/blobStructs.h +85 -0
  49. data/source/bzs/db/engine/mysql/IReadRecords.h +52 -0
  50. data/source/bzs/db/engine/mysql/bookmark.h +195 -0
  51. data/source/bzs/db/engine/mysql/database.cpp +1882 -0
  52. data/source/bzs/db/engine/mysql/database.h +465 -0
  53. data/source/bzs/db/engine/mysql/dbManager.cpp +303 -0
  54. data/source/bzs/db/engine/mysql/dbManager.h +143 -0
  55. data/source/bzs/db/engine/mysql/errorMessage.cpp +75 -0
  56. data/source/bzs/db/engine/mysql/errorMessage.h +43 -0
  57. data/source/bzs/db/engine/mysql/fieldAccess.h +158 -0
  58. data/source/bzs/db/engine/mysql/mydebuglog.cpp +349 -0
  59. data/source/bzs/db/engine/mysql/mydebuglog.h +89 -0
  60. data/source/bzs/db/engine/mysql/mysqlInternal.h +171 -0
  61. data/source/bzs/db/engine/mysql/mysqlThd.cpp +169 -0
  62. data/source/bzs/db/engine/mysql/mysqlThd.h +35 -0
  63. data/source/bzs/db/engine/mysql/percentageKey.h +260 -0
  64. data/source/bzs/db/protocol/ICommandExecuter.h +49 -0
  65. data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +689 -0
  66. data/source/bzs/db/protocol/hs/hsCommandExecuter.h +228 -0
  67. data/source/bzs/db/protocol/tdap/btrDate.cpp +437 -0
  68. data/source/bzs/db/protocol/tdap/btrDate.h +227 -0
  69. data/source/bzs/db/protocol/tdap/client/bulkInsert.h +127 -0
  70. data/source/bzs/db/protocol/tdap/client/client.cpp +106 -0
  71. data/source/bzs/db/protocol/tdap/client/client.h +292 -0
  72. data/source/bzs/db/protocol/tdap/client/connMgr.cpp +144 -0
  73. data/source/bzs/db/protocol/tdap/client/connMgr.h +82 -0
  74. data/source/bzs/db/protocol/tdap/client/database.cpp +863 -0
  75. data/source/bzs/db/protocol/tdap/client/database.h +118 -0
  76. data/source/bzs/db/protocol/tdap/client/databaseFactory.cpp +100 -0
  77. data/source/bzs/db/protocol/tdap/client/dbDef.cpp +1640 -0
  78. data/source/bzs/db/protocol/tdap/client/dbDef.h +135 -0
  79. data/source/bzs/db/protocol/tdap/client/dllmain.cpp +434 -0
  80. data/source/bzs/db/protocol/tdap/client/errorMessage.cpp +92 -0
  81. data/source/bzs/db/protocol/tdap/client/errorMessage_ja.cpp +98 -0
  82. data/source/bzs/db/protocol/tdap/client/fieldDDF.cpp +174 -0
  83. data/source/bzs/db/protocol/tdap/client/fieldDDF.h +91 -0
  84. data/source/bzs/db/protocol/tdap/client/fileDDF.cpp +140 -0
  85. data/source/bzs/db/protocol/tdap/client/fileDDF.h +86 -0
  86. data/source/bzs/db/protocol/tdap/client/filter.cpp +527 -0
  87. data/source/bzs/db/protocol/tdap/client/filter.h +154 -0
  88. data/source/bzs/db/protocol/tdap/client/indexDDF.cpp +137 -0
  89. data/source/bzs/db/protocol/tdap/client/indexDDF.h +84 -0
  90. data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +724 -0
  91. data/source/bzs/db/protocol/tdap/client/nsDatabase.h +123 -0
  92. data/source/bzs/db/protocol/tdap/client/nsTable.cpp +899 -0
  93. data/source/bzs/db/protocol/tdap/client/nsTable.h +199 -0
  94. data/source/bzs/db/protocol/tdap/client/request.h +198 -0
  95. data/source/bzs/db/protocol/tdap/client/sharedData.cpp +58 -0
  96. data/source/bzs/db/protocol/tdap/client/sharedData.h +56 -0
  97. data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +574 -0
  98. data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +53 -0
  99. data/source/bzs/db/protocol/tdap/client/stringConverter.h +627 -0
  100. data/source/bzs/db/protocol/tdap/client/table.cpp +2613 -0
  101. data/source/bzs/db/protocol/tdap/client/table.h +221 -0
  102. data/source/bzs/db/protocol/tdap/client/trdboostapi.h +1096 -0
  103. data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +179 -0
  104. data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +40 -0
  105. data/source/bzs/db/protocol/tdap/client/trnsctcl.def +11 -0
  106. data/source/bzs/db/protocol/tdap/myDateTime.cpp +500 -0
  107. data/source/bzs/db/protocol/tdap/mysql/characterset.cpp +184 -0
  108. data/source/bzs/db/protocol/tdap/mysql/characterset.h +60 -0
  109. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +284 -0
  110. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +53 -0
  111. data/source/bzs/db/protocol/tdap/mysql/debuglog.cpp +383 -0
  112. data/source/bzs/db/protocol/tdap/mysql/debuglog.h +106 -0
  113. data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +680 -0
  114. data/source/bzs/db/protocol/tdap/mysql/request.h +202 -0
  115. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +1020 -0
  116. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +141 -0
  117. data/source/bzs/db/protocol/tdap/tdapRequest.h +190 -0
  118. data/source/bzs/db/protocol/tdap/tdapSchema.cpp +295 -0
  119. data/source/bzs/db/protocol/tdap/tdapSchema.h +558 -0
  120. data/source/bzs/db/protocol/tdap/tdapcapi.h +423 -0
  121. data/source/bzs/db/transactd/appBuilderImple.h +55 -0
  122. data/source/bzs/db/transactd/appModule.cpp +183 -0
  123. data/source/bzs/db/transactd/appModule.h +80 -0
  124. data/source/bzs/db/transactd/connManager.cpp +201 -0
  125. data/source/bzs/db/transactd/connManager.h +60 -0
  126. data/source/bzs/db/transactd/connectionRecord.h +69 -0
  127. data/source/bzs/db/transactd/transactd.cpp +325 -0
  128. data/source/bzs/env/compiler.h +135 -0
  129. data/source/bzs/env/crosscompile.cpp +130 -0
  130. data/source/bzs/env/crosscompile.h +150 -0
  131. data/source/bzs/env/fileopen.h +36 -0
  132. data/source/bzs/env/mbcswchrLinux.cpp +40 -0
  133. data/source/bzs/env/mbcswchrLinux.h +88 -0
  134. data/source/bzs/env/tstring.h +183 -0
  135. data/source/bzs/example/changeSchema.cpp +117 -0
  136. data/source/bzs/example/changeSchema_c.cpp +78 -0
  137. data/source/bzs/example/connection_pool_c.cpp +171 -0
  138. data/source/bzs/example/createDatabase.cpp +305 -0
  139. data/source/bzs/example/createDatabase_c.cpp +202 -0
  140. data/source/bzs/example/deleteRecords.cpp +87 -0
  141. data/source/bzs/example/deleteRecords_c.cpp +57 -0
  142. data/source/bzs/example/dropDatabase.cpp +59 -0
  143. data/source/bzs/example/dropDatabase_c.cpp +34 -0
  144. data/source/bzs/example/insertRecords.cpp +212 -0
  145. data/source/bzs/example/insertRecords_c.cpp +153 -0
  146. data/source/bzs/example/readRecords.cpp +141 -0
  147. data/source/bzs/example/readRecords_c.cpp +107 -0
  148. data/source/bzs/example/updateRecords.cpp +99 -0
  149. data/source/bzs/example/updateRecords_c.cpp +71 -0
  150. data/source/bzs/example/update_with_transaction.cpp +104 -0
  151. data/source/bzs/example/update_with_transaction_c.cpp +80 -0
  152. data/source/bzs/netsvc/client/tcpClient.cpp +226 -0
  153. data/source/bzs/netsvc/client/tcpClient.h +489 -0
  154. data/source/bzs/netsvc/server/IAppModule.h +94 -0
  155. data/source/bzs/netsvc/server/iserver.h +65 -0
  156. data/source/bzs/netsvc/server/serverCpt.cpp +522 -0
  157. data/source/bzs/netsvc/server/serverCpt.h +88 -0
  158. data/source/bzs/netsvc/server/serverPipe.cpp +705 -0
  159. data/source/bzs/netsvc/server/serverPipe.h +96 -0
  160. data/source/bzs/netsvc/server/serverTpool.cpp +416 -0
  161. data/source/bzs/netsvc/server/serverTpool.h +84 -0
  162. data/source/bzs/rtl/benchmark.cpp +96 -0
  163. data/source/bzs/rtl/benchmark.h +65 -0
  164. data/source/bzs/rtl/datetime.cpp +375 -0
  165. data/source/bzs/rtl/datetime.h +53 -0
  166. data/source/bzs/rtl/debuglog.cpp +106 -0
  167. data/source/bzs/rtl/debuglog.h +97 -0
  168. data/source/bzs/rtl/exception.h +116 -0
  169. data/source/bzs/rtl/stl_uty.cpp +35 -0
  170. data/source/bzs/rtl/stl_uty.h +29 -0
  171. data/source/bzs/rtl/stringBuffers.cpp +101 -0
  172. data/source/bzs/rtl/stringBuffers.h +58 -0
  173. data/source/bzs/rtl/strtrim.cpp +135 -0
  174. data/source/bzs/rtl/strtrim.h +46 -0
  175. data/source/bzs/test/tdclatl/bench_tdclatl.js +445 -0
  176. data/source/bzs/test/tdclrb/bench_tdclcpp.rb +375 -0
  177. data/source/bzs/test/tdclrb/prepare.rb +226 -0
  178. data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +172 -0
  179. data/source/bzs/test/tdclrb/transactd_kanjischema_spec.rb +208 -0
  180. data/source/bzs/test/tdclrb/transactd_spec.rb +1536 -0
  181. data/source/bzs/test/transactdBench/transactdBench.cpp +430 -0
  182. data/source/bzs/test/transactdBench/transactdBench2.cpp +342 -0
  183. data/source/bzs/test/trdclengn/test_trdclengn.cpp +2030 -0
  184. data/source/global/tdclatl/Database.cpp +503 -0
  185. data/source/global/tdclatl/Database.h +139 -0
  186. data/source/global/tdclatl/DbDef.cpp +242 -0
  187. data/source/global/tdclatl/DbDef.h +79 -0
  188. data/source/global/tdclatl/Field.cpp +92 -0
  189. data/source/global/tdclatl/Field.h +59 -0
  190. data/source/global/tdclatl/FieldDef.cpp +238 -0
  191. data/source/global/tdclatl/FieldDef.h +87 -0
  192. data/source/global/tdclatl/Flags.cpp +111 -0
  193. data/source/global/tdclatl/Flags.h +55 -0
  194. data/source/global/tdclatl/KeyDef.cpp +51 -0
  195. data/source/global/tdclatl/KeyDef.h +55 -0
  196. data/source/global/tdclatl/KeySegment.cpp +55 -0
  197. data/source/global/tdclatl/Table.cpp +600 -0
  198. data/source/global/tdclatl/Table.h +144 -0
  199. data/source/global/tdclatl/TableDef.cpp +291 -0
  200. data/source/global/tdclatl/TableDef.h +86 -0
  201. data/source/global/tdclatl/TdVersion.cpp +74 -0
  202. data/source/global/tdclatl/TdVersion.h +54 -0
  203. data/source/global/tdclatl/_IDatabaseEvents_CP.h +113 -0
  204. data/source/global/tdclatl/dllmain.cpp +30 -0
  205. data/source/global/tdclatl/dllmain.h +27 -0
  206. data/source/global/tdclatl/keySegment.h +57 -0
  207. data/source/global/tdclatl/resource.h +0 -0
  208. data/source/global/tdclatl/stdafx.cpp +2 -0
  209. data/source/global/tdclatl/stdafx.h +25 -0
  210. data/source/global/tdclatl/targetver.h +4 -0
  211. data/source/global/tdclatl/tdclatl.cpp +68 -0
  212. data/source/global/tdclatl/tdclatl.def +10 -0
  213. data/source/global/tdclatl/tdclatl.idl +1035 -0
  214. data/source/linux/charsetConvert.h +112 -0
  215. data/source/linux/linuxTypes.h +33 -0
  216. data/source/linux/tchar.h +428 -0
  217. data/transactd.gemspec +97 -0
  218. metadata +267 -0
@@ -0,0 +1,87 @@
1
+ #include <stdio.h>
2
+ #include <bzs/db/protocol/tdap/client/database.h>
3
+ #include <bzs/db/protocol/tdap/client/table.h>
4
+ #include <bzs/db/protocol/tdap/client/dbdef.h>
5
+
6
+
7
+ using namespace bzs::db::protocol::tdap::client;
8
+ using namespace bzs::db::protocol::tdap;
9
+
10
+
11
+ /**
12
+ @brief read and delete example
13
+
14
+ This program deletes one record of a "user" table.
15
+
16
+ Please execute "create database" , "change schema" and "insert records" example
17
+ before execute this example.
18
+
19
+ */
20
+
21
+ static const short fieldnum_id = 0;
22
+ static const short fieldnum_name = 1;
23
+ static const short fieldnum_group = 2;
24
+ static const short fieldnum_tel = 3;
25
+ static const char_td keynum_id = 0;
26
+
27
+ /** show database operation error
28
+ */
29
+ void showError(const _TCHAR* caption,const _TCHAR* tableName, short statusCode)
30
+ {
31
+ _TCHAR tmp[1024]={0x00};
32
+ nstable::tdapErr(0x00, statusCode, tableName, tmp);
33
+ _tprintf(_T("%s error No.%ld %s\n"),caption, statusCode, tmp);
34
+ }
35
+
36
+
37
+ bool deleteUser(table* tb)
38
+ {
39
+ tb->clearBuffer();
40
+ tb->setKeyNum(keynum_id); //use id key
41
+ tb->setFV(fieldnum_id, 3);//id=3 satoshi
42
+ tb->seek();
43
+ if (tb->stat() == 0)
44
+ tb->del();
45
+ if (tb->stat()!=0)
46
+ showError(_T("update user"), tb->tableDef()->tableName(), tb->stat());
47
+ return (tb->stat()== 0);
48
+ }
49
+
50
+
51
+
52
+ /** Open database
53
+ */
54
+ bool openDatabase(database* db, const _TCHAR* uri)
55
+ {
56
+ db->open(uri, TYPE_SCHEMA_BDF);
57
+ if (db->stat() != 0)
58
+ {
59
+ showError(_T("open daatabase"), NULL, db->stat());
60
+ return false;
61
+ }
62
+ return true;
63
+ }
64
+
65
+ #pragma argsused
66
+ int _tmain(int argc, _TCHAR* argv[])
67
+ {
68
+ int result = 0;
69
+ static const _TCHAR* uri = _T("tdap://localhost/test?dbfile=test.bdf");
70
+ database* db = database::create();
71
+
72
+ if (openDatabase(db, uri))
73
+ {
74
+ table* tbu = db->openTable(_T("user"));
75
+ if (db->stat() != 0)
76
+ showError(_T("open user table"), NULL, db->stat());
77
+ else
78
+ {
79
+ if (deleteUser(tbu))
80
+ _tprintf(_T("Update records success. \n"));
81
+ tbu->release();
82
+ }
83
+ db->close();
84
+ }
85
+ database::destroy(db);
86
+ return result;
87
+ }
@@ -0,0 +1,57 @@
1
+ #include <bzs/db/protocol/tdap/client/trdboostapi.h>
2
+ #include <iostream>
3
+
4
+ using namespace bzs::db::protocol::tdap::client;
5
+ using namespace bzs::db::protocol::tdap;
6
+
7
+
8
+ /**
9
+ @brief read and delete example
10
+
11
+ This program deletes one record of a "user" table.
12
+
13
+
14
+ Please execute "create database" , "change schema" and "insert records" example
15
+ before execute this example.
16
+
17
+ */
18
+
19
+
20
+
21
+ static const short fieldnum_id = 0;
22
+ static const char_td keynum_id = 0;
23
+
24
+ void deleteUser(table_ptr tb)
25
+ {
26
+ //Seek record that user id = 3 "satoshi"
27
+ indexIterator it = readIndex_v(tb, eSeekEqual, keynum_id, 3);
28
+
29
+ if (it != indexIterator::eos)
30
+ deleteRecord(it); //delete id = 3
31
+ else
32
+ THROW_BZS_ERROR_WITH_MSG(_T("User id = 3 was not found"));
33
+
34
+ }
35
+
36
+
37
+ #pragma argsused
38
+ int _tmain(int argc, _TCHAR* argv[])
39
+ {
40
+ database_ptr db = createDatadaseObject();
41
+ try
42
+ {
43
+ connectParams param(_T("tdap"), _T("localhost"), _T("test"), _T("test"));
44
+ openDatabase(db, param);
45
+
46
+ table_ptr tb = openTable(db, _T("user"));
47
+ deleteUser(tb);
48
+ std::cout << "Insert records success." << std::endl;
49
+ return 0;
50
+ }
51
+
52
+ catch(bzs::rtl::exception& e)
53
+ {
54
+ std::tcout << *bzs::rtl::getMsg(e) << std::endl;
55
+ }
56
+ return 1;
57
+ }
@@ -0,0 +1,59 @@
1
+ #include <stdio.h>
2
+ #include <bzs/db/protocol/tdap/client/database.h>
3
+ #include <bzs/db/protocol/tdap/client/table.h>
4
+ #include <bzs/db/protocol/tdap/client/dbdef.h>
5
+
6
+ using namespace bzs::db::protocol::tdap::client;
7
+ using namespace bzs::db::protocol::tdap;
8
+
9
+
10
+ /**
11
+ @brief drop database example
12
+
13
+ This program drop "test" database.
14
+ */
15
+
16
+
17
+
18
+ /** show database operation error
19
+ */
20
+ void showError(const _TCHAR* caption,const _TCHAR* tableName, short statusCode)
21
+ {
22
+ _TCHAR tmp[1024]={0x00};
23
+ nstable::tdapErr(0x00, statusCode, tableName, tmp);
24
+ _tprintf(_T("%s error No.%ld %s\n"),caption, statusCode, tmp);
25
+ }
26
+
27
+
28
+ /** Open database
29
+ */
30
+ bool openDbExclusive(database* db, const _TCHAR* uri)
31
+ {
32
+ db->open(uri, TYPE_SCHEMA_BDF, TD_OPEN_EXCLUSIVE);
33
+ if (db->stat() != 0)
34
+ {
35
+ showError(_T("open daatabase"), NULL, db->stat());
36
+ return false;
37
+ }
38
+ return true;
39
+ }
40
+
41
+
42
+ #pragma argsused
43
+ int _tmain(int argc, _TCHAR* argv[])
44
+ {
45
+ int result = 1;
46
+ static const _TCHAR* uri = _T("tdap://localhost/test?dbfile=test.bdf");
47
+ database* db = database::create();
48
+
49
+ if (openDbExclusive(db, uri))
50
+ {
51
+ db->drop();
52
+ if (db->stat() != 0)
53
+ showError(_T("drop daatabase"), NULL, db->stat());
54
+ result = db->stat();
55
+ db->close();
56
+ }
57
+ database::destroy(db);
58
+ return result;
59
+ }
@@ -0,0 +1,34 @@
1
+ #include <bzs/db/protocol/tdap/client/trdboostapi.h>
2
+ #include <iostream>
3
+ using namespace bzs::db::protocol::tdap::client;
4
+ using namespace bzs::db::protocol::tdap;
5
+
6
+
7
+ /**
8
+ @brief drop database example
9
+
10
+ This program drop "test" database.
11
+ */
12
+
13
+
14
+ #pragma argsused
15
+ int _tmain(int argc, _TCHAR* argv[])
16
+ {
17
+ database_ptr db = createDatadaseObject();
18
+ try
19
+ {
20
+ connectParams prams(_T("tdap"), _T("localhost"), _T("test"), _T("test"));
21
+ prams.setMode(TD_OPEN_EXCLUSIVE);
22
+
23
+ openDatabase(db, prams);
24
+ dropDatabase(db);
25
+
26
+ std::cout << "drop databse success." << std::endl;
27
+ return 0;
28
+ }
29
+ catch(bzs::rtl::exception& e)
30
+ {
31
+ std::tcout << *bzs::rtl::getMsg(e) << std::endl;
32
+ }
33
+ return 1;
34
+ }
@@ -0,0 +1,212 @@
1
+ #include <stdio.h>
2
+ #include <bzs/db/protocol/tdap/client/database.h>
3
+ #include <bzs/db/protocol/tdap/client/table.h>
4
+ #include <bzs/db/protocol/tdap/client/dbdef.h>
5
+ #include <iostream>
6
+ #include <fstream>
7
+ #include <vector>
8
+
9
+ using namespace bzs::db::protocol::tdap::client;
10
+ using namespace bzs::db::protocol::tdap;
11
+
12
+
13
+ /**
14
+ @brief Insert records example
15
+
16
+ This program inserts some records to "user" and "group1" table.
17
+
18
+ user table
19
+ ----------------------------------------
20
+ id | name |group| tel
21
+ ----------------------------------------
22
+ 1 | "akio" | 1 | "81-3-2222-3569"
23
+ 2 | "yoko" | 2 | "81-263-80-5555"
24
+ 3 | "satoshi" | 1 | "81-3-1111-1234"
25
+ 4 | "keiko" | 2 | "81-26-222-3569"
26
+ 5 | "john" | 3 | "81-26-222-3565"
27
+ -------------------------------------
28
+
29
+ gropu1 table
30
+ ----------------------------------------
31
+ id | name |
32
+ ----------------------------------------
33
+ 1 | "develop" |
34
+ 2 | "sales" |
35
+ 3 | "finance" |
36
+ ----------------------------------------
37
+
38
+ picture table
39
+ ----------------------------------------
40
+ type | id | picture
41
+ ----------------------------------------
42
+ 1 | 1 | dummy picture (this program bianry image)
43
+ ----------------------------------------
44
+
45
+
46
+ Please execute the "create database" and "change schema" example
47
+ before execute this example.
48
+
49
+ */
50
+
51
+ static const short fieldnum_id = 0;
52
+ static const short fieldnum_name = 1;
53
+ static const short fieldnum_group = 2;
54
+ static const short fieldnum_tel = 3;
55
+
56
+ static const short fieldnum_pic_type = 0;
57
+ static const short fieldnum_pic_id = 1;
58
+ static const short fieldnum_pic_pic = 2;
59
+
60
+ /** show database operation error
61
+ */
62
+ void showError(const _TCHAR* caption,const _TCHAR* tableName, short statusCode)
63
+ {
64
+ _TCHAR tmp[1024]={0x00};
65
+ nstable::tdapErr(0x00, statusCode, tableName, tmp);
66
+ _tprintf(_T("%s error No.%ld %s\n"),caption, statusCode, tmp);
67
+ }
68
+
69
+ bool insertUser(table* tb, int id, const _TCHAR* name, int groupid
70
+ , const _TCHAR* tel)
71
+ {
72
+ tb->clearBuffer();
73
+ tb->setFV(fieldnum_id, id);
74
+ tb->setFV(fieldnum_name, name);
75
+ tb->setFV(fieldnum_group, groupid);
76
+ tb->setFV(fieldnum_tel, tel);
77
+ tb->insert();
78
+ if (tb->stat() != 0)
79
+ showError(_T("insert user record"), tb->tableDef()->tableName(), tb->stat());
80
+ return (tb->stat() == 0);
81
+ }
82
+
83
+ bool insertUsers(table* tb)
84
+ {
85
+ bool ret = insertUser(tb, 1, _T("akio") , 1, _T("81-3-2222-3569"));
86
+ if (ret == false) return false;
87
+
88
+ ret = insertUser(tb, 2, _T("yoko") , 2, _T("81-263-80-5555"));
89
+ if (ret == false) return false;
90
+
91
+ ret = insertUser(tb, 3, _T("satoshi"), 1, _T("81-3-1111-1234"));
92
+ if (ret == false) return false;
93
+
94
+ ret = insertUser(tb, 4, _T("keiko") , 2, _T("81-26-222-3569"));
95
+ if (ret == false) return false;
96
+
97
+ ret = insertUser(tb, 5, _T("john") , 3, _T("81-26-222-3565"));
98
+ if (ret == false) return false;
99
+ return true;
100
+ }
101
+
102
+
103
+ bool insertGroup(table* tb, int id, const _TCHAR* name)
104
+ {
105
+ tb->clearBuffer();
106
+ tb->setFV(fieldnum_id, id);
107
+ tb->setFV(fieldnum_name, name);
108
+ tb->insert();
109
+ if (tb->stat() != 0)
110
+ showError(_T("insert group1 record"), tb->tableDef()->tableName(), tb->stat());
111
+ return (tb->stat() == 0);
112
+ }
113
+
114
+ bool insertGroups(table* tb)
115
+ {
116
+ bool ret = insertGroup(tb, 1, _T("develop"));
117
+ if (ret == false) return false;
118
+
119
+ ret = insertGroup(tb, 2, _T("sales"));
120
+ if (ret == false) return false;
121
+
122
+ ret = insertGroup(tb, 3, _T("finance"));
123
+ if (ret == false) return false;
124
+ return true;
125
+ }
126
+
127
+ bool insertPicure(table* tb, short type, int id, const void* img, size_t size)
128
+ {
129
+ tb->clearBuffer();
130
+ tb->setFV(fieldnum_pic_type, type);
131
+ tb->setFV(fieldnum_pic_id, id);
132
+ tb->setFV(fieldnum_pic_pic, img, (uint_td)size);
133
+ tb->insert();
134
+
135
+ if (tb->stat() != 0)
136
+ showError(_T("insert picture record"), tb->tableDef()->tableName(), tb->stat());
137
+ return (tb->stat() == 0);
138
+
139
+ }
140
+
141
+ void readImage(const _TCHAR* path, std::vector<char>& s)
142
+ {
143
+ std::ifstream ifs(path, std::ios::in | std::ios::binary );
144
+
145
+ ifs.seekg(0, std::ios::end);
146
+ s.resize(ifs.tellg());
147
+
148
+ ifs.seekg(0, std::ios::beg);
149
+ ifs.read(&s[0], s.size());
150
+ }
151
+
152
+ /** Open database
153
+ */
154
+ bool openDatabase(database* db, const _TCHAR* uri)
155
+ {
156
+ db->open(uri, TYPE_SCHEMA_BDF);
157
+ if (db->stat() != 0)
158
+ {
159
+ showError(_T("open daatabase"), NULL, db->stat());
160
+ return false;
161
+ }
162
+ return true;
163
+ }
164
+
165
+ #pragma argsused
166
+ int _tmain(int argc, _TCHAR* argv[])
167
+ {
168
+ int result = 0;
169
+ static const _TCHAR* uri = _T("tdap://localhost/test?dbfile=test.bdf");
170
+ database* db = database::create();
171
+
172
+ if (openDatabase(db, uri))
173
+ {
174
+ table* tbg = db->openTable(_T("group1"));
175
+ if (db->stat() != 0)
176
+ showError(_T("open group1 table"), NULL, db->stat());
177
+ else
178
+ {
179
+ if (insertGroups(tbg))
180
+ {
181
+ table* tbu = db->openTable(_T("user"));
182
+ if (db->stat() != 0)
183
+ showError(_T("open user table"), NULL, db->stat());
184
+ else
185
+ {
186
+ if (insertUsers(tbu))
187
+ {
188
+ table* tbp = db->openTable(_T("picture"));
189
+ if (db->stat() != 0)
190
+ showError(_T("open user table"), NULL, db->stat());
191
+ else
192
+ {
193
+ std::vector<char> s;
194
+ readImage(argv[0], s);
195
+ if (insertPicure(tbp, 1, 1, &s[0], s.size()))
196
+ {
197
+ _tprintf(_T("Insert records success. \n"));
198
+ result = 0;
199
+ }
200
+ tbp->release();
201
+ }
202
+ }
203
+ tbu->release();
204
+ }
205
+ }
206
+ tbg->release();
207
+ }
208
+ db->close();
209
+ }
210
+ database::destroy(db);
211
+ return result;
212
+ }
@@ -0,0 +1,153 @@
1
+ #include <bzs/db/protocol/tdap/client/trdboostapi.h>
2
+ #include <iostream>
3
+ #include <fstream>
4
+ #include <vector>
5
+
6
+ using namespace bzs::db::protocol::tdap::client;
7
+ using namespace bzs::db::protocol::tdap;
8
+
9
+
10
+ /**
11
+ @brief Insert records example
12
+
13
+ This program inserts some records to "user" and "group1" table.
14
+
15
+ user table
16
+ ----------------------------------------
17
+ id | name |group| tel
18
+ ----------------------------------------
19
+ 1 | "akio" | 1 | "81-3-2222-3569"
20
+ 2 | "yoko" | 2 | "81-263-80-5555"
21
+ 3 | "satoshi" | 1 | "81-3-1111-1234"
22
+ 4 | "keiko" | 2 | "81-26-222-3569"
23
+ 5 | "john" | 3 | "81-26-222-3565"
24
+ -------------------------------------
25
+
26
+ gropu1 table
27
+ ----------------------------------------
28
+ id | name |
29
+ ----------------------------------------
30
+ 1 | "develop" |
31
+ 2 | "sales" |
32
+ 3 | "finance" |
33
+ ----------------------------------------
34
+
35
+ picture table
36
+ ----------------------------------------
37
+ type | id | picture
38
+ ----------------------------------------
39
+ 1 | 1 | dummy picture (this program bianry image)
40
+ ----------------------------------------
41
+
42
+ Please execute the "create database" and "change schema" example
43
+ before execute this example.
44
+
45
+ */
46
+
47
+
48
+
49
+ static const short fieldnum_id = 0;
50
+ static const short fieldnum_name = 1;
51
+ static const short fieldnum_group = 2;
52
+ static const short fieldnum_tel = 3;
53
+
54
+ static const short fieldnum_pic_type = 0;
55
+ static const short fieldnum_pic_id = 1;
56
+ static const short fieldnum_pic_pic = 2;
57
+
58
+
59
+ void insertUser(fields& fds, int id, const _TCHAR* name, int groupid
60
+ , const _TCHAR* tel)
61
+ {
62
+
63
+ fds.clearValues();
64
+ fds[fieldnum_id] = id;
65
+ fds[fieldnum_name] = name;
66
+ fds[fieldnum_group] = groupid;
67
+ fds[fieldnum_tel] = tel;
68
+
69
+ insertRecord(fds);
70
+ }
71
+
72
+ void insertUsers(table_ptr tb)
73
+ {
74
+ fields fds(tb);
75
+ insertUser(fds, 1, _T("akio") , 1, _T("81-3-2222-3569"));
76
+ insertUser(fds, 2, _T("yoko") , 2, _T("81-263-80-5555"));
77
+ insertUser(fds, 3, _T("satoshi"), 1, _T("81-3-1111-1234"));
78
+ insertUser(fds, 4, _T("keiko") , 2, _T("81-26-222-3569"));
79
+ insertUser(fds, 5, _T("john") , 3, _T("81-26-222-3565"));
80
+
81
+ }
82
+
83
+
84
+ void insertGroup(fields& fds, int id, const _TCHAR* name)
85
+ {
86
+
87
+ fds.clearValues();
88
+ fds[fieldnum_id] = id;
89
+ fds[fieldnum_name] = name;
90
+ insertRecord(fds);
91
+ }
92
+
93
+ void insertGroups(table_ptr tb)
94
+ {
95
+ fields fds(tb);
96
+ insertGroup(fds, 1, _T("develop"));
97
+ insertGroup(fds, 2, _T("sales"));
98
+ insertGroup(fds, 3, _T("finance"));
99
+ }
100
+
101
+
102
+ void insertPicure(table_ptr tb, short type, int id, const void* img, size_t size)
103
+ {
104
+ fields fds(tb);
105
+ fds.clearValues();
106
+ fds[fieldnum_pic_type] = type;
107
+ fds[fieldnum_pic_id] = id;
108
+ fds[fieldnum_pic_pic].setBin(img, size);
109
+ insertRecord(fds);
110
+
111
+ }
112
+ void readImage(const _TCHAR* path, std::vector<char>& s)
113
+ {
114
+ std::ifstream ifs(path, std::ios::in | std::ios::binary );
115
+
116
+ ifs.seekg(0, std::ios::end);
117
+ s.resize(ifs.tellg());
118
+
119
+ ifs.seekg(0, std::ios::beg);
120
+ ifs.read(&s[0], s.size());
121
+ }
122
+
123
+ #pragma argsused
124
+ int _tmain(int argc, _TCHAR* argv[])
125
+ {
126
+ database_ptr db = createDatadaseObject();
127
+ try
128
+ {
129
+ connectParams param(_T("tdap"), _T("localhost"), _T("test"), _T("test"));
130
+ openDatabase(db, param);
131
+
132
+ table_ptr tb = openTable(db, _T("group1"));
133
+ insertGroups(tb);
134
+
135
+ tb = openTable(db, _T("user"));
136
+ insertUsers(tb);
137
+
138
+ tb = openTable(db, _T("picture"));
139
+
140
+ std::vector<char> s;
141
+ readImage(argv[0], s);
142
+ insertPicure(tb, 1, 1, &s[0], s.size());
143
+
144
+ std::cout << "Insert records success." << std::endl;
145
+ return 0;
146
+ }
147
+
148
+ catch(bzs::rtl::exception& e)
149
+ {
150
+ std::tcout << *bzs::rtl::getMsg(e) << std::endl;
151
+ }
152
+ return 1;
153
+ }