投稿

11月, 2021の投稿を表示しています

11月25日(木)3、4コマ目

イメージ
今日、やったこと 課題(かんたんオークションサイト構築C#版) 課題について 口頭で説明したシーケンス図の変更事項をホワイトボードにまとめました。 図 シーケンス図変更事項 課題の締め切り くどいですが、 12月6日(月)4コマ目終了時です。

11月18日(木)3、4コマ目

イメージ
前回の練習問題 異常時対応にフォーカスしたユーザー登録アプリケーションを作ってもらいました。 ソースをあげておきます。 RegistUserResultEnum(列挙型) ユーザー登録の結果を通知するための列挙型。 UserDAOクラス IDが重複した(主キー制約違反)、紹介者がいない(参照整合性制約違反)等が発生すれば、例外がスローされます。スローされた例外のNumberプロパティでエラーコードが確認し、発生エラーに応じた戻り値を返します。 Serviceクラス RegistUser()メソッドでは、UserDAOのInsert()メソッドを呼び出しています。 例外がスローされたとき(通知しても仕方がないエラーが発生したとき)、OracleExceptionから一般的な実行時例外のApplicationExceptionに変更してスローしています。 Index.cshtml ここは特に問題ないかと。 Index.cshtml.cs OnPost()メソッドで入力チェックを行っています。 図 入力チェック 〇空白チェック stringクラスのIsNullOrEmpty()メソッドは引数がnullまたは空白のときにtrueを返します。 stringクラスには空白チェック用メソッドが下表にように用意されています。 メソッド 役割 public static bool IsNullOrEmpty(string? value) 引数valueが nullまたは空の文字列("") ならtrue、それ以外ならfalseを返す。 public static bool IsNullOrWhiteSpace(string? value) 引数valueが nullまたは空白文字列(""だけでなく"  "など) ならtrue、それ以外ならfalseを返す。 〇数値以外が入力された ユーザーIDや紹介者ID入力欄に...

11月11日(木)3、4コマ目

イメージ
今日、やったこと 異常時処理対応プログラム作成(C#) 今日のホワイトボード 前回の異常時対応プログラムを元に、練習問題を作りました。 2つのテーブルを使いますが、参照関係から、どのテーブルから順に登録、削除するかがポイントになります。 図 2つのテーブルについて 次回は 今回の解説を行い、評価用課題を作成してもらいます。

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

イメージ
今日、やったこと 前回の課題(C#+トランザクション)の解説 例外処理の話(C#) 今日のホワイトボード 前回の課題(C#+トランザクション)の解説 採点して、以下が気になりました。 変更対象のIDと数量を別々の変数で扱う 1商品毎にコミット、ロールバックをする 図 採点して気になったところ ソースコードをあげておきます。 StockDAO.cs Index.cshtml Index.cshtml.cs 例外処理について 処理終了時の状態 処理終了時は 正常終了 異常終了 の2つに分かれる。 さらに、異常終了は 想定内のエラー 想定外のエラー に分類し、 想定内のエラーを業務エラー 、 想定外のエラーを例外 と呼ぶ。 ただ、想定外のエラー(例外)はよくよく考えるとすべて想定内のエラー(業務エラー)にすることができる。 そこで、想定内のエラー(業務エラー)は   ユーザーに通知してリカバリをしてほしい(できる)エラー と再定義する。例えば、入力内容がおかしい場合など。 想定外のエラー(例外)は   ユーザーに通知してもリカバリできないエラー とする。例えば、DB接続に失敗したなど。 図 処理終了時の状態 処理終了時の状態をどうやって伝える C#ではメソッド呼び出し元に通知する手段として 戻り値 例外スロー が使える。これらをうまく使い分けることが今回のポイント。 図 処理終了時の状態を通知する手段 例外スロー時 一番ダメなのは、   例外をキャッチして、なにもしない(catchブロック内が空) です。 例外スロー時にやることがあるときだけ、try{}catch{}を使うこと 。 なにもないなら、例外は呼び出し元へスローすること。 図 例外スロー時は DBアクセス時にエラーが発生したら オラクルの場合、エラーコード(ORA-xxxxx)が返される。 プログラム上では、OracleExceptionがスローされる。Numberプロパティに5ケタのエラーコード(xxxxxの部分)がセットされている。 図 DBアクセス時にエラーが発生すると...

11月2日(火)3、4コマ目

イメージ
今日、やったこと C#+OracleDB(ロックする) 今日のホワイトボード 今日はサンプルアプリケーション4を作成した。 DBアクセスクラス 「更新前にロックする」が今回のポイント。  トランザクションは 更新対象行をロック 更新 の2つのSQLで構成される。 プレゼンテーション層 どの商品のボタンが押されたかがわかるようにする必要がある。 Javaのときと同じように、name属性やvalue属性を工夫して対応する。 図 どの商品のボタンが押されたか、取得すべきテキストボックスは? OnPost()の引数ではなく、name属性を指定して入力値を取得するには、Request.Formプロパティを使う。[]内はname属性値。 図 テキストボックス入力値の取得 ポイントになるコードをあげておきます。 ItemDAOクラス Index.cshtml Index.cshtml.cs

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

Javaでトランザクション 演習課題(在庫引当)  ポイントになったItemDAOクラスのUpdate()メソッドとサーブレットだけあげておきます。 ItemDAOクラス サーブレット