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に登録するで利用するテーブルをテナント環境セットアップ時に作成するよう設定していきます。 […]

スクリプト開発で登録フォームを作成する | intra-mart Developer Site にコメントする コメントをキャンセル

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

関連記事

no image

申請画面で設定した特定の期日までは承認が行えないフローの作成方法

このCookbookでは、申請画面で設定した特定の期日までは承認が行えないフローの作成方法を紹介します。 アクション設定の表示モード変換を使用し、承認可能日の前後で承認ボタンの表示有無が切り替わる画面 …

no image

request.log を Kibana で可視化する方法

この CookBook では、request.log を Kibana で可視化する方法について紹介しています。 方法は色々ありますが、この CookBook では Logstash と logsta …

no image

IM-BIS アクション設定の「条件」の書き方

このCookbookでは、アクション設定の条件式の書き方を説明します。 この方法により入力値に応じてアクション設定の外部連携や入力モード変換などのイベントの実行をコントロールすることができます。 完成 …

no image

IM-LogicDesignerのIM-ContentsSearch コンテンツ登録タスク利用例

このCookBookでは、IM-LogicDesignerのIM-ContentsSearch コンテンツ登録タスクの利用例を紹介します。 IM-BISで作成したワークフローの案件終了処理で、画面項目 …

no image

ViewCreatorの計算式で日付データを操作する例

ViewCreatorを利用するとデータベース等に格納されているデータを簡単に画面に表示することが出来ます。 ViewCreatorについて – intra-mart Accel Platform V …

まだデータがありません。

RSSRSSRSSRSS