UIコンポーネントとDBのバインド

2005年11月16日 at 9:07 午前


さて、本日は、UIコンポーネントとDBのバインドについて説明します。
今回のプログラムは、前回のプログラムを少し改造して作成を行います。
実行結果:
DBより人間の名前を取得しドロップダウンリスト(コンボボックス)上に
表示させます。
そして、リストより名前を選択し、ボタンを実行すると対応する人に対して、
「こんにちは、***さん」と表示するプログラムを作成します。
事前情報:
まず、プログラムを作成する前に、事前情報を少し話しします。
今回、ここで提供したい情報はCreator2がJDBCのRowSetをサポートしている
  ということです。
JSR 114: JDBC Rowset Implementations
このJDBC RowSet(行セット)テクノロジにより、Creatorでは、
データベースにドラッグ & ドロップでグラフィカルに
アクセスしたり、照会をグラフィカル編集したりできます。
加えて、JDBC 互換の為、Creator から、広範囲の SQL データベース
を利用できるようになります。
プログラムの作成:
さて、前置きはここまでにして、実際にプログラムを作成していきましょう。
まず、前回のプロジェクトからテキストフィールドを削除してください。
削除は、テキストフィールドを選択し、マウスの右ボタンをクリックします。
そして、「Delete」を選択実行するとコンポーネントを削除できます。

そしてDropDownListコンポーネントをドラッグ&ドロップにて、
画面に貼り付けてください。すると下記の画面が表示されます。

ここで、下記の「outline」パレットを確認してください。
デフォルトで設定されている、dropDownListコンポーネントのオプションの値が
確認できます。仮に現在の状態でプログラムを実行するとドロップダウンリスト
(コンボボックス)には「Item1」、「Item2」、「Item3」の文字列が表示され
選択可能になっていることが確認できます。

UIコンポーネントとDBテーブルのバインド
この状態は、まだDBにはバインドされていませんが、これからdropDownList
コンポーネントをDBのテーブルにバインドする方法を行います。
今回は、DBテーブルとしてCreator2にデフォルトで登録されている、「Person」
テーブルにバインドします。
補足:CreatorはデフォルトでPointBaseという簡易データベースサーバが同梱されています。
手順として、まず「Server」タブを選択します。「Server」タブ中の「Data Sources」
ツリーより、「Trabel」→「Tables」→「PERSON」テーブルを表示させます。
そして、「PERSON」テーブルをドラッグ&ドロップでdropDownListコンポーネント上に
配置します。
すると、dropDownListコンポーネント上に表示されていた、「Item1」の項目は
「abc」という文字列に変わります。

ここで、ドロップダウンリスト上で選択可能な表示項目、そして選択した後の
実行結果を設定します。ドロップダウンリスト上でマウス右クリックを押下して
ください。すると下記の項目が表示されます。ここで「Bind to Data」を実行します。

「Bind to Data」を実行すると下記の画面が表示されます。
ここで、「Value Field」と「Display Field」を選択します。
今回の例では、表示も実行結果も人間の名前を設定したい為、両方ともに、
「PERSON.NAME」を選択し「OK」ボタンを押下してください。
これで、UIコンポーネントとDBへのバインドは完了です。
とても簡単ですよね!!

さて、それではこのプログラムの実装を行いたいと思います。
前回のプロジェクトと同様、画面デザインに戻って、「こんにちは」ボタンを
ダブルクリックしてください。

すると、button1_action()メソッドを記述する画面が表示されるかと思います。
ここで、下記のコードを記述してください。

public String button1_action(){
//TODO: Replace with your code
String name = (String) dropDown1.getSelected();
String splitnames[] = name.split(“,”);
staticText1.setText(“こんにちは” + splitnames[1] + “さん!!”);
return null;
}

コードを若干説明します。ドロップダウンリストをドラッグ&ドロップした際、
dropDown1というIDが割り当てられ、そしてCreatorにより自動的に
下記のコードが生成されています。今回、DropDownクラスのインスタンスメソッド
getSelected()を実行し、選択された値を取得しています。
取得した文字列(名前)は、”,”(カンマ)によって分割されたFirstNameと
LastNameとなっています。今回LastNameだけを表示させるため、文字列を分割して
表示させています。

private DropDown dropDown1 = new DropDown();
public DropDown getDropDown1() {
return dropDown1;
}
public void setDropDown1(DropDown dd) {
this.dropDown1 = dd;
}

さて、上記のコードを記述したら、後は「Build」して実行します。
無事コンパイル(Build)は完了しましたか?実行すると下記のような
実行結果が得られるかと思います。

最後に、先ほどは表示名と返り値を共に「PERSON.NAME」としましたが、
色々と変えて実行してみてください。
以上で、UIコンポーネントとDBテーブルとのバインドについて説明しましたが、
問題なくできたでしょうか?
次回は、HTMLの<TABLE>(表)に対してDBテーブルをバインドさせる方法について
記載する予定です。

Entry filed under: 未分類.

Yahoo AJAX 対応 (an aerial photograph.) James GoslingのT-Shirtsなげコンテストも開始


Java Champion & Evangelist

Translate

ご注意

このエントリは個人の見解であり、所属する会社の公式見解ではありません

カレンダー

2005年11月
 123456
78910111213
14151617181920
21222324252627
282930  

カテゴリー

clustermap

ブログ統計情報

  • 1,267,308 hits

RSSフィード

アーカイブ


%d人のブロガーが「いいね」をつけました。