投稿

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

8月24日(火)1、2コマ目

今日、やったこと オラクルDBを利用したWebアプリケーション開発確認演習 今日の確認演習 演習5 とくにややこしいところはないと思います。 Startup.cs、Group.cs、Item.cs 前回と同じです。 ItemDAO.cs Index.cshtml Index.cshtml.cs   演習6 xx円以上かつxx円以下の検索がポイント。 パラメータマーカーを2つ利用する。 Startup.cs、Group.cs、Item.cs 前回と同じです。 ItemDAO.cs Index.cshtml Index.cshtml.cs

8月17日(火)1、2コマ目

イメージ
今日、やったこと C#からオラクルDBアクセス(パラメータマーカーを使う) 今日のホワイトボード サンプルアプリケーション(OracleDB_sample2) 下図のイメージ。 図 サンプルアプリケーションのイメージ 選択ボタンをクリックすると選択されたグループに属する商品を検索する。 Item.cs、Group.cs 前回と同じ。 GroupDAO.cs 前回と同じ。グループマスタを全件検索するSelectAll()メソッドのみ。 ItemDAO.cs 引数で指定されたグループIDで商品マスタを検索するSelectByGroupId()メソッドを作る。 SQL中にパラメータマーカー(:グループID)、Parameterオブジェクトが登場するが、下図の関係。 図 パラメータマーカーとParameterオブジェクト Index.cshtml Index.cshtml.cs OnGet()メソッドでグループ一覧を取得していたが、選択ボタンクリック時にはOnGet()は実行されないため、グループ一覧は表示されなくなる。 GETでもPOSTでもグループ一覧は必要なので、コンストラクタで取得することに変更。 なお、このIndexModelクラスのインスタンスはリクエスト毎に生成される。 DAOクラス内のメソッドの命名パターン ありがちパターンは下図のとおり。 図 DAOクラスのメソッド命名パターン なぜ、パラメータマーカーを使うのか? セキュリティ的な理由と、DBパフォーマンス向上のための2点。 DBの実行計画を再利用するためにパラメータマーカーを使う。結果的にDBパフォーマンスが向上する。 図 DBの実行計画を再利用するためにパラメータマーカーを使う セキュリティ的な理由は後期に話します。 練習課題 画面は下図のイメージです。 図 練習課題のイメージ Group.cs、Item.cs おなじです。 ItemDAO.cs ポイントは主キーで検索するため、戻り値がListでないところです。 Index.cshtml Index.cshtml.cs DataReaderのRead()メソッド 検索結果にアクセスするためのDat...

8月16日(月)

イメージ
今日の予習 オラクル用接続文字列 "Data Source= " + "  (DESCRIPTION = " +  "    (ADDRESS_LIST = " +  "      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.4.6)(PORT = 1521)) " + "    ) " + "    (CONNECT_DATA =  " + "        (SERVICE_NAME = infopdb) " + "     ) " + "  );  " + "User Id= ユーザー名 ; password= パスワード ;" です。 ユーザー名 、 パスワード は自分のOracle接続用アカウントを指定してください。 なお、 ユーザー名 はPCログイン時のユーザー名と同じ パスワード はユーザー名と同じ文字列 です。 今日、やったこと C#からオラクルDBを使う(ODP.NET Core) 今日のホワイトボード C#からオラクルDBにアクセスするには 方法はいろいろあるが、オラクルが作ったODP.NET Coreを使うのが一番(と思う)。 図 C#プログラムとODP.NET Core これから階層化して ほっとくと~.cshtmlや~.cshtml.csですべてやってしまう。結果として汚いソフトになってしまう。 そこで、役割分担。授業では下図のように役割を分担します。 図 階層化 今日のソースコード グループマスタを全件検索、表示する [データトランスファー]Group.cs グループマスタ情報の受け渡し担当。プロパティとコンストラクタだけなので、省略。 [データアクセス]GroupDAO.cs オラクルDB上のグループマスタにアクセスするためのクラス。 今日は全件検索をするためのSelectAll()メソッドのみ。 [プレゼンテーション]Index.c...