今日、やったこと 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...