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

Azure 上に iAP を構築する方法

  この CookBook では、Azure の Virtual Machines 機能を用いて、スタンドアローンで intra-mart Accel Platform を構築する方法につい …

no image

Lombok のご紹介

この CookBook では、Lombok について紹介しています。 intra-mart 開発本部では Lombok を利用しています。 Lombok を簡単に説明すると、「アノテーションを書くだけ …

no image

完了したワークフロー案件の登録データをメンテナンスする方法

このCookBookでは、IM-BISとIM-FormaDesignerで作成したワークフロー案件の登録データを編集する方法を紹介します。 一部制限はありますが、IM-FormaDesignerのアプ …

no image

共通マスタのアカウント更新を契機に、IMBoxグループに参加させる方法(IM-LogicDesigner トリガ定義)

このCookBookでは、共通マスタのアカウント更新を契機に、IMBoxのGroupBoxに参加させる方法を紹介します。 IM-LogicDesignerのトリガ定義を利用することで、ノンプログラミン …

no image

スクリプト開発でのCSRF対策(formタグ編)

Cross Site Request Forgery(CSRF)とは、閲覧者に不正にHTTPリクエストを送信させ、攻撃者の意図した処理を実行させる攻撃手法です。 このCookBookでは、スクリプト開 …

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

RSSRSSRSSRSS