12月7日(月)1、2コマ目

今日、やったこと

新課題「かんたんオークションサイト構築(Java版)」

今日のホワイトボード

<A>タグについて

2ページ目の商品一覧画面にて、商品名のリンクをクリックすると、商品を選択できます。

リンクは作るにはHTMLの<A>タグを使います。<A>タグにはクリック後移動するURLを指定するhref属性があります。

図 <A>タグ


なお、リンククリックはHTTPのGETコマンドでリンク先をリクエストします。


前回の課題について

課題「かんたんオークションサイト(C#版)」を採点して気が付いた点を。

UserDAOクラスのGetCount()メソッド

ダメ1 全件検索実行後、検索結果のユーザー名、パスワードを1件づつチェック

まず、以下のSQLを実行。

 SELECT * FROM ユーザーマスタ

つぎに、検索結果のユーザー名、パスワードをチェック。

ユーザー名、パスワードが引数と一致するならカウントアップ。

while(reader.Next) {

 if(reader["ユーザー名"].Equals(引数のユーザー名) && 

  reader["パスワード"].Equals(引数のパスワード)) {

  count++;

 }

}


ダメ2 検索実行、検索結果をカウントアップ

まず、以下のSQLを実行。

 SELECT * FROM ユーザーマスタ 

 WHERE ユーザー名=引数のユーザー名 AND パスワード=引数のパスワード

つぎに検索結果の行数をカウントアップ。

while(rs.Next) {

 count++;

}


ダメ3 検索実行、検索結果をListに格納してListの要素数を返す

まず、以下のSQLを実行。

 SELECT * FROM ユーザーマスタ 

 WHERE ユーザー名=引数のユーザー名 AND パスワード=引数のパスワード

つぎに検索結果をListに格納。

while(rs.Next) {

 list.Add(new User(・・));

}

Listの要素数を返す。

return list.Count;


おすすめ グループ関数count()を使う

実行するSQLはこれ。

 SELECT count(*) FROM ユーザーマスタ 

 WHERE ユーザー名=引数のユーザー名 AND パスワード=引数のパスワード

検索結果は条件に合う行数。これが欲しい値。


BidDAOクラスのInsert()メソッド

応札データテーブルをロックします。(してない人も結構いた)

SQLは以下です。

 SELECT*FROM 応札データ WHERE 商品ID=選択商品のID FOR UPDATE;

このSQLを実行するCommandオブジェクトの名前ですが、

 OracleCommand cmdLock = new OracleCommand("SELECT・・", con);

あたりなら良いのですが、

 OracleCommand cmdRock = new OracleCommand("SELECT・・", con);

な人がちょこちょこおられました。

違いが判るでしょうか?

メソッドの戻り値で条件分岐

戻り値がbool型なメソッドを実行し、その結果で条件分岐する場合です。

嫌なかんじ1

bool result = メソッド実行;

if(result == true)
{
  結果がtrueのときの処理
}
else
{
  結果がfalseのときの処理
}

このあと、変数resultは使っていない

嫌なかんじ2

bool result = メソッド実行;

if(result == true)
{
  結果がtrueのときの処理
}
else if(result == false)
{
  結果がfalseのときの処理
}

このあと、変数resultは使っていない

こうしてほしい

if(メソッド実行)
{
  結果がtrueのときの処理
}
else
{
  結果がfalseのときの処理
}

「いやなかんじ1」では、変数resultは使っていないに等しいです。無駄は省きましょう。
「いやなかんじ2」では、bool型の場合、trueかfalseのいづれかです。
else ifでわざわざfalseかチェックする必要はありません。
elseにきたときはfalseです。

今回の課題も内容的にはほぼ同じです。
この辺を改善していただけることを期待しています。

コメント

このブログの人気の投稿

11月16日(月)1、2コマ目

11月2日(月)1、2コマ目

10月13日(火)1、2コマ目