Choco Soft

Nadesiko DE RDB

Choco Soft header image 2

なでしこでRDBプログラミング【第三回】

2008年06月23日 · コメント(0) · RDBプログラミング

★ChocoのDB(データベース)を操作しましょうコーナー★【第三回】アプリケーションを作ろう!【ログイン編】
なでしこでDBを利用したアプリケーションを作れると、実務に役立ちますよ。
今回からは、簡単なアプリケーションを作って行きましょう。

■Part1:機能と画面について■

前回はDBの検索方法が主でしたが、今日はアプリケーションとしてのDB、その画面などを勉強しましょう。
通常アプリケーションの基本機能としては、次のような機能が考えられます。

1.データの登録
2.データの更新
3.データの検索
4.データの削除
5.データの印刷

この5つの機能さえ押さえれば、簡単なアプリケーションは出来たも同然です!(笑)
実際は、業務知識があってこそのアプリケーションですがそれはみなさんの実務で応用して下さい。
まずは基本機能を利用する画面を考えましょう。

画面の構成を考えるに当たって、重要な事は以下の点です。

1.シンプル。
2.見やすい。

シンプルであれば、説明書なども不要ですし、お年寄りや子供でも利用できます。
見やすければ、情報が簡単に手に入り、アプリケーションを利用したくなります。
可能であれば、一画面で完結するのが良いです。

■Part2:ログインテーブルについて■

登録も出来て、検索も、更新も、印刷も・・・は難しいから、印刷はCSV出力等に置き換えてっと。
どんな画面が良いのでしょう?(笑)

アドレスや住所、名前、年齢などを管理するアプリケーションを作りながら説明していきましょう。
まず画面ですが、個人情報保護の観点から誰でも利用できるのではなく、ログインしないと利用できないようにしてみましょう。
ロジックとしては、ログインするIDとパスワードがデータベースに登録してあるID、パスワードと合致していればOK。
データベース上には、ログインテーブル(LOGIN)を作成します。

作成するフィールドは、シーケンス番号、ID、パスワードの三つで良いですね。
いつものように、連番フィールドを作成して。→ 【L_ID】
今回は、PostgreSQLが持っている特殊タイプ【TIMESTAMP】を利用してみましょう。
IDは【L_Name】、パスワードは【L_Password】と言う名前のフィールにします。

#ここから————————————————————————-
PDATAとは配列
接続文字列は「test」#ここはデータソース名です。
接続文字列でADO開く。
「CREATE TABLE login (L_ID serial primary key,L_DATE TIMESTAMP,L_Name TEXT,L_Password text);」をSQL実行#ここで登録用の「LOGIN」テーブルを作成します。
「INSERT INTO login (L_DATE,L_Name,L_Password) values (‘now’,’choco’,’nadesiko’);」をSQL実行#データを登録します。
「SELECT * from login;」をSQL実行#登録されたデータを読み込みます。
PDATAはDB結果全部取得#上で読込んだデータを変数「PDATA」に読込みます。
DB閉じる。
PDATAを言う。
終わる。
#ここまで————————————————————————-
PostgreSQLは、【now】と言う特殊な定数を使う事によって、その日時を取得できます。
今回は、ログインマスタに登録した日付と言う意味で作成してみました。

■Part3:ログイン画面について■

インターネットを利用していると、よくあるログイン画面を作成してみましょう。
インターネットと違って、ブラウザで開くタイプではありませんが簡単ですのでチャレンジ!

まずはIDを入力する所ですが、GUI部品の一つ【エディタ】を使ってみましょう。
パスワードも同じですが、周囲の人に見られても大丈夫なようにマスクをかけてみましょう。

#ここから————————————————————————-
母艦について
母艦のタイトルは「なでしこでRDB」
母艦の背景色はウィンドウ背景色
母艦のW=350
母艦のH=130
母艦のX=90
母艦のY=90
!母艦設計=『母艦のオフに最大化ボタン有効変更』
母艦を中央移動

部品01とはラベル。
そのテキストは「ログイン画面」
そのX=20。そのY=10。そのW=200。そのH=20
その文字サイズは11
その文字色は青色

ID01とはパネル
そのテキストは「ID」
そのX=30。そのY=40。そのW=100。そのH=20

ID02とはエディタ
そのX=135。そのY=40。そのW=100。そのH=20

PASS01とはパネル
そのテキストは「PASSWORD」
そのX=30。そのY=70。そのW=100。そのH=20

PASS02とはエディタ
そのX=135。そのY=70。そのW=100。そのH=20
そのパスワードモードはオン

ログインボタンとはボタン
そのX=250。そのY=40。そのW=80。そのH=50
そのボタンをクリックした時は
 ログイン処理

エンドボタンとはボタン
そのX=250。そのY=240。そのW=80。そのH=50
そのクリックした時は
 終わる。

#ここまで————————————————————————-

はい、画面が出来ましたね。

この画面では、ログインと言う名前のボタンを押すと【ログイン処理】を行うようになってます。
次は、このログイン処理の方法を考えて見ましょう。

■Part4:ログイン処理について■

実際にログインした時に、入力されたIDとパスワードがDBに登録されている物と同じか調べましょう。
ここでは、SELECT文を使って探して見ます。

#ここから————————————————————————-
●ログイン処理
 LIDとは文字列//入力されたIDを格納する変数
 LPAとは文字列//入力されたパスワードを格納する変数
 ACTIVATEとは配列//結果を格納する変数

 ID02をLIDに代入
 PASS02をLPAに代入

 接続文字列は「test」#ここはデータソース名です。
 接続文字列でADO開く。
 エラー監視
  「SELECT * from login where l_name = ‘{LID}’ and l_password = ‘{LPA}’;」をSQL実行
 エラーならば
  「エラー」と言う。
  戻る。

 ACTIVATE=DB結果全部取得
 DB閉じる。
 ACTIVATEを言う。
 戻る。
#ここまで————————————————————————-

エラー監視命令を入れておかないと、SQL構文がおかしい時に判別ができなくなります。
今回は単純に「エラー」と言う。を使いました。
実務で使う場合は、その前に実行したSQL文をチェックする意味で、そのままSQL文を表示させたりするのが良いでしょう。

#<例>————————————————————————-
 エラーならば
  「SELECT * from login where l_name = ‘{LID}’ and l_password = ‘{LPA}’;」と言う。
  戻る。
#ここまで————————————————————————-

では、全部つなげて実行してみましょう!

#ここから————————————————————————-
母艦について
母艦のタイトルは「なでしこでRDB」
母艦の背景色はウィンドウ背景色
母艦のW=350
母艦のH=330
母艦のX=90
母艦のY=90
!母艦設計=『母艦のオフに最大化ボタン有効変更』
母艦を中央移動

部品01とはラベル。
そのテキストは「ログイン画面」
そのX=20。そのY=10。そのW=200。そのH=20
その文字サイズは11
その文字色は青色

ID01とはパネル
そのテキストは「ID」
そのX=30。そのY=40。そのW=100。そのH=20

ID02とはエディタ
そのX=135。そのY=40。そのW=100。そのH=20

PASS01とはパネル
そのテキストは「PASSWORD」
そのX=30。そのY=70。そのW=100。そのH=20

PASS02とはエディタ
そのX=135。そのY=70。そのW=100。そのH=20
そのパスワードモードはオン

ログインボタンとはボタン
そのX=250。そのY=40。そのW=80。そのH=50
そのクリックした時は
 ログイン処理

エンドボタンとはボタン
そのX=250。そのY=240。そのW=80。そのH=50
そのクリックした時は
 終わる。

●ログイン処理
 LIDとは文字列
 LPAとは文字列

 ID02をLIDに代入
 PASS02をLPAに代入

 接続文字列は「test」#ここはデータソース名です。
 接続文字列でADO開く。
 エラー監視
  「SELECT * from login where l_name = ‘{LID}’ and l_password = ‘{LPA}’;」をSQL実行
 エラーならば
  「エラー」と言う。
  戻る。

 ACTIVATE=DB結果全部取得
 DB閉じる。
 もし((ACTIVATEの行数)>1)ならば
  「ログイン成功」と言う。
 違えば
  「ログイン失敗」と言う。

 戻る。
#ここまで————————————————————————-

どうですか?無事にログイン機能が出来ましたね♪
次回は、データ登録を中心にやってみましょう。

タグ :

コメント(0)

コメントを受け付けておりません。