CookBook

フォームに入力した内容をデータベースに登録する

投稿日:2015-12-14 更新日:

登録フォームに入力した内容をデータベースに登録する手順をご紹介します。

今回は例として、CookBook:スクリプト開発で登録フォームを作成するで作成した登録フォームに入力された内容をデータベースに登録するスクリプトを作成します。データの送信先にマッピングしている cookbook_109004/ajax/ajax.js のinit()関数にコードを記述します。

完成イメージ

<操作方法>

1. フォームに任意の内容を入力します。
2. 「登録」ボタンをクリックします。
3. データベースに登録が成功した場合は「登録に成功しました」と表示されます。
4. データベースに登録が失敗した場合は「登録に失敗しました」と表示されます。

完成サンプル

以下の完成サンプルをダウンロードしてご活用ください。
e builder プロジェクト : im_cookbook_109004.zip
imm ファイル : im_cookbook_109004-1.0.0.imm

ローカル環境で表示させる場合は以下のURLにアクセスしてください。
http://localhost:8080/imart/im_cookbook/109004/edit
なおベースURLである以下の部分は環境に合わせて適宜変更してください。
http://localhost:8080/imart

レシピ

  1. リクエストされたデータをデータベースへ登録できる形に設定します。
  2. データベースにデータを登録します。
  3. データベースへの登録結果を画面に表示します。

注意:データベースにデータを登録するにはあらかじめデータベースにテーブルを作成しておく必要があります。
配布しているユーザモジュールを利用する場合、データベースにPostgreSQLを利用していればテナント環境セットアップ時に自動的にテーブルが作成されます。
配布しているユーザモジュールを利用しないで今回のプログラムを作成した場合や、データベースにSQLServerやDB2やOracleを利用されている場合は以下のようなテーブルを作成してからプログラムを実行してください。

テーブル名:cb109004
カラム名 データ型 備考
item_cd 文字列型 20 主キー
item_name 文字列型 100
item_price 数値型 15
comment 文字列型 200

1. リクエストされたデータをデータベースへ登録できる形に設定します。

入力フォームから送られてきた内容をデータベースのテーブルへ登録できる形に設定します。

データを登録するときはオブジェクトの形でデータを渡します。
登録するテーブルのカラム名をキーに設定します。
登録するテーブルは item_cd を主キーとしているので、ユニークなIDを自動生成するAPIであるIdentifier.get()を利用します。
Identifier.get()の詳細はAPIドキュメントIdentifierオブジェクトをご参照ください。
商品名や金額や備考はリクエスト情報から取り出して設定します。金額は数値型に変換が必要なので、parseInt()を利用して変換します。

2. データベースにデータを登録します。

以下のように設定したデータをデータベースに登録します。

(1) Transaction.begin()を利用してトランザクション処理を開始します。
Transaction.begin()は関数を受け取ることが出来ます。関数を受け取る場合コミット漏れやロールバック漏れを予防できます。
Transactionオブジェクトの詳細はAPIドキュメントTransactionオブジェクトをご参照ください。

(2) TenantDatabase().insert()を利用してデータをテーブルに登録します。
TenantDatabaseオブジェクトのinsert()メソッドを利用することで、SQLを書くことなく簡単にテーブルにデータを登録することができます。
insert()の第一引数には登録するデータベースのテーブル名を、第二引数には先ほど登録内容を設定したオブジェクトを渡します。
insert()は処理結果が格納されたDatabaseResultオブジェクトを返します。
TenantDatabaseオブジェクトの詳細はAPIドキュメントTenantDatabaseオブジェクトをご参照ください。

(3) 処理に失敗した場合ロールバックします。
データベース処理に失敗した場合、result.errorにtrueが格納されています。
エラー判定がtrueの場合、Transaction.rollback()を利用してロールバックします。
データベース処理に成功した場合はトランザクション終了時に自動的にコミットされます。

3. データベースへの登録結果を画面に表示します。

以下のように呼出元にデータベース処理の結果を返却し、メッセージを表示させます。

(1) Web.getHTTPResponse()を利用してHTTPレスポンスオブジェクトを取得します。
Webオブジェクトの詳細はAPIドキュメントWebオブジェクトをご参照ください。

(2) setContentType()を利用してMIMEタイプと文字コードを設定します。ここではMIMEタイプをJSON、文字コードをUTF-8に設定しています。
HTTPResponseオブジェクトの詳細はAPIドキュメントHTTPResponseオブジェクトをご参照ください。

(3) sendMessageBodyString()を利用してメッセージを返却します。
送信データはImJson.toJSONString()を利用してJSON文字列に変換します。
ImJsonオブジェクトの詳細はAPIドキュメントImJsonオブジェクトをご参照ください。
errorにはデータベース処理結果のエラー判定を設定します。
errorがfalseの場合、ページにsuccessMessageが表示されます。
errorがtrueの場合、ページにerrorMessageが表示されます。

以上でデータベースの登録処理の作成は完了です。

-CookBook
-,

執筆者:


  1. […] ださい。 CookBook:フォームに入力した内容をデータベースに登録する […]

  2. […] フォームに入力した内容をデータベースに登録する […]

  3. […] 今回は例として、フォームに入力した内容をDBに登録するで利用するテーブルをテナント環境セットアップ時に作成するよう設定していきます。 […]

comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

Forma標準アプリとIM-LogicDesignerを利用してBISワークフローの一括承認画面を作成する

このCookBookでは、Forma標準アプリとLogicDesignerを利用して、BISワークフローの一括承認画面を作成する方法を紹介します。 完成イメージ ① 承認を実施するフローとノードを設定 …

no image

入力画面の後に入力内容の確認画面を設定する方法

このCookbookでは、入力画面からの登録時に入力内容の確認画面を設定する方法を説明します。 この方法は、以下の製品で作成したアプリケーションやフローで利用できます。 IM-FormaDesigne …

処理モーダルで差戻先ノードを固定する

このCookBookでは、ボタンアイテム(処理モーダル)において、差戻先ノードを固定する方法を紹介します。 完成イメージ ノード「approve2」の差戻先ノードをノード「apply」に固定する。 処 …

no image

Formaの実行画面でアクセスログを収集する

このCookBookでは、Formaの実行画面で、アクセスログを収集する方法を紹介します。 サンプルでは、登録画面を開いた時点とデータ登録を実行した時点で、ログを収集します。 ログを収集することで、登 …

no image

テーブルをやめてフレックスコンテナを使おう

このCookBookでは、Bloommaker で表を作成する時に「フレックスコンテナ」を使用する方法及び、メリットについてご紹介します。 レンダリングに時間がかかる「テーブル」ではなく「フレックスコ …