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);

コメント