Source: srcJsdoc/h5.api.sqldb.js

  1. /*
  2. * Copyright (C) 2012-2016 NS Solutions Corporation
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. *
  16. * hifive
  17. */
  18. function Select() {
  19. //
  20. }
  21. function Insert() {
  22. //
  23. }
  24. function Update() {
  25. //
  26. }
  27. function Del() {
  28. //
  29. }
  30. function Sql() {
  31. //
  32. }
  33. /**
  34. * このオブジェクトに設定された情報からSQLステートメントとパラメータを生成し、SQLを実行します
  35. * <p>
  36. * 実行結果は、Promiseオブジェクトのprogress()に指定したコールバック関数または、done()に指定したコールバック関数に、<b>検索結果を保持するインスタンス</b>が返されます。
  37. * <p>
  38. * 検索結果へのアクセスは以下のように実行します。
  39. *
  40. * <pre>
  41. * db.insert('USER', {ID:10, NAME:'TANAKA'}).execute().done(function(rows) {
  42. *  rows.item(0).ID // 検索にマッチした1件目のレコードのID
  43. *  rows.item(0).NAME // 検索にマッチした1件目のレコードのNAME
  44. * });
  45. * </pre>
  46. *
  47. * また、progress()に指定したコールバック関数の第二引数には、トランザクションオブジェクトが格納され、このオブジェクトを使用することで、トランザクションを引き継ぐことができます。
  48. *
  49. * <pre>
  50. * db.select('PRODUCT', ['ID']).where({NAME: 'ball'}).execute().progress(function(rs, tx) {
  51. *  db.update('STOCK', {PRICE: 2000}, tx).where({ID: rs.item(0).ID}).execute();
  52. * });
  53. * </pre>
  54. *
  55. * db.select().execute()で返ってきたトランザクションを、db.update()の第三引数に指定することで、db.selec()とdb.update()は同一トランザクションで実行されます。
  56. * <p>
  57. * <h5>ver1.1.8からの変更点</h5>
  58. * execute()が返すPromiseオブジェクトのprogressコールバックの第二引数(<b>TransactionalExecutor</b>インスタンス)に、
  59. * Select/Insert/Del/Update/Sqlインスタンスをaddすることができるようになりました。
  60. * <p>
  61. * 下記のサンプルコードは、tx.add()で追加したStatementインスタンスを、一番最初に実行したdb.select()と同一トランザクションでSQLを実行します。
  62. *
  63. * <pre>
  64. * db.select('PRODUCT', ['ID']).where({NAME:'ballA'}).execute().progress(function(rs, tx) {
  65. *   tx.add(db.select('STOCK', ['COUNT']).where({ID: rs.item(0).ID})).execute().done(function(rows) {
  66. *    alert(rows.item(0).COUNT);
  67. *   });
  68. * });
  69. * </pre>
  70. *
  71. * @function
  72. * @memberOf Select
  73. * @returns {Promise} Promiseオブジェクト
  74. */
  75. Select.prototype.execute = function() {
  76. //
  77. };
  78. /**
  79. * このオブジェクトに設定された情報からSQLステートメントとパラメータを生成し、SQLを実行します
  80. * <p>
  81. * 実行結果は、Promiseオブジェクトのprogress()に指定したコールバック関数または、done()に指定したコールバック関数に、<b>登録に成功したレコードのIDを持つ配列</b>が返されます。
  82. * <p>
  83. * 検索結果へのアクセスは以下のように実行します。
  84. *
  85. * <pre>
  86. * db.insert('USER', {ID:10, NAME:'TANAKA'}).execute().done(function(rows) {
  87. *  rows.item(0).ID // 検索にマッチした1件目のレコードのID
  88. *  rows.item(0).NAME // 検索にマッチした1件目のレコードのNAME
  89. * });
  90. * </pre>
  91. *
  92. * また、progress()に指定したコールバック関数の第二引数には、トランザクションオブジェクトが格納され、このオブジェクトを使用することで、トランザクションを引き継ぐことができます。
  93. *
  94. * <pre>
  95. * db.select('STOCK', {ID:10, NAME:'ballA'}).execute().progress(function(rs, tx) { // ※1
  96. *  db.insert('STOCK', {ID:11, NAME:'ballB'}, tx).execute(); // ※2
  97. * });
  98. * </pre>
  99. *
  100. * ※1のprogress()で返ってきたトランザクション(tx)を、※2のinsert()の第三引数に指定することで、2つのdb.insert()は同一トランザクションで実行されます。 *
  101. * <p>
  102. * <h5>ver1.1.8からの変更点</h5>
  103. * execute()が返すPromiseオブジェクトのprogressコールバックの第二引数(<b>TransactionalExecutor</b>インスタンス)に、
  104. * Select/Insert/Del/Update/Sqlインスタンスをaddすることができるようになりました。
  105. * <p>
  106. * 下記のサンプルコードは、tx.add()で追加したStatementインスタンスを、一番最初に実行したdb.insert()と同一トランザクションでSQLを実行します。
  107. *
  108. * <pre>
  109. * db.insert('PRODUCT', {ID:11, NAME:'ballA'}).execute().progress(function(rs, tx) {
  110. *   tx.add(db.insert('PRODUCT', {ID:12, NAME:'ballB'})).execute().done(function() {
  111. *    alert('success');
  112. *   });
  113. * });
  114. * </pre>
  115. *
  116. * @function
  117. * @memberOf Insert
  118. * @returns {Promise} Promiseオブジェクト
  119. */
  120. Insert.prototype.execute = function() {
  121. //
  122. };
  123. /**
  124. * このオブジェクトに設定された情報からSQLステートメントとパラメータを生成し、SQLを実行します
  125. * <p>
  126. * 実行結果は、Promiseオブジェクトのprogress()に指定したコールバック関数または、done()に指定したコールバック関数に、<b>更新されたレコードの件数</b>が返されます。
  127. *
  128. * <pre>
  129. * db.update('USER', {NAME:TANAKA}).where({ID:10}).execute().done(function(rowsAffected) {
  130. *  rowsAffected // 更新されたレコードの行数(Number型)
  131. * });
  132. * </pre>
  133. *
  134. * また、progress()に指定したコールバック関数の第二引数には、トランザクションオブジェクトが格納され、このオブジェクトを使用することで、トランザクションを引き継ぐことができます。
  135. *
  136. * <pre>
  137. * db.select('PRODUCT', ['ID']).where({NAME: 'ball'}).execute().progress(function(rs, tx) {
  138. *  db.update('STOCK', {PRICE: 2000}, tx).where({ID: rs.item(0).ID}).execute();
  139. * });
  140. * </pre>
  141. *
  142. * db.select().execute()で返ってきたトランザクションを、db.update()の第三引数に指定することで、db.select()とdb.update()は同一トランザクションで実行されます。
  143. * <p>
  144. * <h5>ver1.1.8からの変更点</h5>
  145. * execute()が返すPromiseオブジェクトのprogressコールバックの第二引数(<b>TransactionalExecutor</b>インスタンス)に、
  146. * Select/Insert/Del/Update/Sqlインスタンスをaddすることができるようになりました。
  147. * <p>
  148. * 下記のサンプルコードは、tx.add()で追加したStatementインスタンスを、一番最初に実行したdb.select()と同一トランザクションでSQLを実行します。
  149. *
  150. * <pre>
  151. * db.select('PRODUCT', ['ID']).where({NAME: 'ballA'}).execute().progress(function(rs, tx) {
  152. *   tx.add(db.update('STOCK', {COUNT: 10}).where({ID: rs.item(0).ID})).execute().done(function() {
  153. *    alert('success');
  154. *   });
  155. * });
  156. * </pre>
  157. *
  158. * @function
  159. * @memberOf Update
  160. * @returns {Promise} Promiseオブジェクト
  161. */
  162. Update.prototype.execute = function() {
  163. //
  164. };
  165. /**
  166. * このオブジェクトに設定された情報からSQLステートメントとパラメータを生成し、SQLを実行します
  167. * <p>
  168. * 実行結果は、Promiseオブジェクトのprogress()に指定したコールバック関数または、done()に指定したコールバック関数に、<b>削除されたレコードの件数</b>が返されます。
  169. *
  170. * <pre>
  171. * db.del('USER').where({ID:10}).execute().done(function(rowsAffected) {
  172. *  rowsAffected // 削除されたレコードの行数(Number型)
  173. * });
  174. * </pre>
  175. *
  176. * また、progress()に指定したコールバック関数の第二引数には、トランザクションオブジェクトが格納され、このオブジェクトを使用することで、トランザクションを引き継ぐことができます。
  177. *
  178. * <pre>
  179. * db.select('PRODUCT', ['ID']).where({NAME: 'ball'}).execute().progress(function(rs, tx) {
  180. *  db.del('STOCK', tx).where({ID: rs.item(0).ID}).execute();
  181. * });
  182. * </pre>
  183. *
  184. * db.select().execute()で返ってきたトランザクションを、db.del()の第二引数に指定することで、db.select()とdb.del()は同一トランザクションで実行されます。 *
  185. * <p>
  186. * <h5>ver1.1.8からの変更点</h5>
  187. * execute()が返すPromiseオブジェクトのprogressコールバックの第二引数(<b>TransactionalExecutor</b>インスタンス)に、
  188. * Select/Insert/Del/Update/Sqlインスタンスをaddすることができるようになりました。
  189. * <p>
  190. * 下記のサンプルコードは、tx.add()で追加したStatementインスタンスを、一番最初に実行したdb.del()と同一トランザクションでSQLを実行します。
  191. *
  192. * <pre>
  193. * db.del('USER').where({ID:1}).execute().progress(function(rs, tx) {
  194. *   tx.add(db.del('ROLE').where({ID:1})).execute().done(function() {
  195. *    alert('success');
  196. *   });
  197. * });
  198. * </pre>
  199. *
  200. * @function
  201. * @memberOf Del
  202. * @returns {Promise} Promiseオブジェクト
  203. */
  204. Del.prototype.execute = function() {
  205. //
  206. };
  207. /**
  208. * このオブジェクトに設定された情報からSQLステートメントとパラメータを生成し、SQLを実行します
  209. * <p>
  210. * 実行結果は、戻り値であるPromiseオブジェクトのprogress()に指定したコールバック関数または、done()に指定したコールバック関数に、<b>実行結果を保持するオブジェクト</b>が返されます。
  211. * <p>
  212. * 実行結果オブジェクトは、以下のプロパティを持っています。<br>
  213. * <table border="1">
  214. * <tr>
  215. * <td>プロパティ名</td>
  216. * <td>説明</td>
  217. * </tr>
  218. * <tr>
  219. * <td>rows</td>
  220. * <td>検索(SELECT)を実行した場合、このプロパティに結果が格納されます。</td>
  221. * </tr>
  222. * <tr>
  223. * <td>insertId</td>
  224. * <td>登録(INSERT)を実行した場合、このプロパティに登録したレコードのIDが格納されます。</td>
  225. * </tr>
  226. * <tr>
  227. * <td>rowsAffected</td>
  228. * <td>削除(DELETE)や更新(UPDATE)した場合、このプロパティに変更のあったレコードの件数が格納されます。</td>
  229. * </tr>
  230. * </table>
  231. * <p>
  232. * 例.検索結果の取得
  233. *
  234. * <pre>
  235. * db.sql('SELECT * FROM USER').execute().done(function(rs) {
  236. *  rs.rows // SQLResultSetRowList
  237. *  rs.insertId // Number
  238. *  rs.rowsAffected // Number
  239. * });
  240. * </pre>
  241. *
  242. * <p>
  243. * <b>SQLResultSetRowList</b>は、以下のプロパティを持っています。<br>
  244. * <table border="1">
  245. * <tr>
  246. * <td>プロパティ名</td>
  247. * <td>説明</td>
  248. * </tr>
  249. * <tr>
  250. * <td>length</td>
  251. * <td>検索にマッチしたレコードの件数</td>
  252. * </tr>
  253. * <tr>
  254. * <td>rows</td>
  255. * <td>検索結果</td>
  256. * </tr>
  257. * </table>
  258. * <p>
  259. * 例.検索結果の取得する
  260. *
  261. * <pre>
  262. * db.sql('SELECT ID, NAME FROM USER').execute().done(function(rs) {
  263. *  rs.rows.item(0).ID // 検索にマッチした1件目のレコードのID
  264. *  rs.rows.item(0).NAME // 検索にマッチした1件目のレコードのNAME
  265. * });
  266. * </pre>
  267. *
  268. * また、progress()に指定したコールバック関数の第二引数には、トランザクションオブジェクトが格納され、このオブジェクトを使用することで、トランザクションを引き継ぐことができます。
  269. * <p>
  270. * 例.同一トランザクションでdb.insert()とdb.sql()を実行する
  271. *
  272. * <pre>
  273. * db.select('PRODUCT', ['ID']).where({NAME: 'ball'}).execute().progress(function(rs, tx) {
  274. *  db.sql('UPDATE STOCK SET PRICE = 2000', tx).where({ID: rs.item(0).ID}).execute();
  275. * });
  276. * </pre>
  277. *
  278. * db.select().execute()で返ってきたトランザクションを、db.sql()の第三引数に指定することで、db.select()とdb.sql()は同一トランザクションで実行されます。 *
  279. * <p>
  280. * <h5>ver1.1.8からの変更点</h5>
  281. * execute()が返すPromiseオブジェクトのprogressコールバックの第二引数(<b>TransactionalExecutor</b>インスタンス)に、
  282. * Select/Insert/Del/Update/Sqlインスタンスをaddすることができるようになりました。
  283. * <p>
  284. * 下記のサンプルコードは、tx.add()で追加したStatementインスタンスを、一番最初に実行したdb.select()と同一トランザクションでSQLを実行します。
  285. *
  286. * <pre>
  287. * db.select('PRODUCT', ['ID']).where({NAME:'ballA'}).execute().progress(function(rs, tx) {
  288. *   tx.add(db.sql('SELECT COUNT FROM STOCK WHERE ID = '+ rs.item(0).ID')).execute().done(function(rs2) {
  289. *    alert(rs2.rows.item(0).COUNT);
  290. *   });
  291. * });
  292. * </pre>
  293. *
  294. * @function
  295. * @memberOf Sql
  296. * @returns {Promise} Promiseオブジェクト
  297. */
  298. Sql.prototype.execute = function() {
  299. //
  300. };