投稿

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

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

イメージ
今日、やったこと [練習問題]ODP.NET Core練習問題1 [練習問題 解説]ODP.NET Core練習問題1 列の値がNULLの場合(DBNull) 今日のホワイトボード [練習問題 解説]ODP.NET Core練習問題1 正解例をあげておきます。 練習1 練習2 練習3 練習4 練習5 列の値がNULLの場合 データベース上のテーブルの値がない=NULL。 図 データがない = NULL もし、NULLなデータを検索した場合、OracleDataReaderはDBNullを返す。 が、Convert.ToInt32()のようなキャスト関数はDBNullの場合、エラーになる。 図 DBNullならキャストに失敗する ①DBNullかチェックしたい いろいろ方法はあるが、とりあえず、   DBNull.Value.Equals( チェック対象 ) を紹介。チェック対象がDBNullならTrueを返す。 この結果が True -> チェック対象はDBNull -> NULLな場合に値に書き換え False -> チェック対象はDBNullではない -> DataReaderで検索結果を取得 を行う。 ②3項演算子を使う 3項演算子とは、   条件式 ? 条件式がTrueのときの値 : 条件式がFalseのときの値 と、 ifをコンパクトにまとめた もの。 ソースコードは以下のようになる。 [DBNull]練習1 cs_ユーザーデータテーブルの性別列がNULLの場合は、”不明”と出力。 [DBNull]練習2 cs_オリンピックテーブルは以下のようになっている。 図 c...

11月27日(木)2コマ目

イメージ
今日、やったこと [ODP.NET Core]パラメータマーカーをつかう(前回のつづき) 今日のホワイトボード [ODP.NET Core]パラメータマーカーをつかう  前回のパラメータマーカーを使う のつづき。 前回はSQL中に数値型データが埋め込まれるパラメータマーカーが1個だけだった。 今回は SQL中のパラメータマーカーが複数の場合 SQL中のパラメータマーカーにセットされる値が文字列の場合 について。 SQL中のパラメータマーカーが複数の場合 たとえば、SQL中のパラメータマーカーが2個の場合、OracleCommandのParametersプロパティに追加するOracleParameterクラスのインスタンスは2つ。 SQL中のパラメータマーカーとOracleParameterクラスのインスタンスの対応 SQL中の1つ目のパラメータマーカーに紐づくOracleParameterクラスのインスタンスは、Parametersプロパティに1回目にAdd()したOracleParameterクラスのインスタンス。 SQL中の2つ目のパラメータマーカーに紐づくOracleParameterクラスのインスタンスは、Parametersプロパティに2回目にAdd()したOracleParameterクラスのインスタンス。 SQL中のパラメータマーカーの順番と、ParametersプロパティにAdd()する順番でひもづけ 。 図 SQL中にパラメータマーカーが複数ある場合 ソースコードはこちら SQL中のパラメータマーカーにセットされる値が文字列の場合 SQLでは、文字列は'(シングルクォーテーション)でくくる。 パラメータマーカーが文字列型の場合なら、Oracleはシングルクォーテーションも含めてバインドしてくれる 。 図 パラメータマーカーが文字列の場合 ソースコードはこちら 次回は 練習問題をやってもらいます。

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

イメージ
今日、やったこと [確認テスト 解説]クラスの確認テスト1 [ODP.NET Core]練習1~3 [ODP.NET Core]パラメータマーカーを使う 今日のホワイトボード [確認テスト 解説]クラスの確認テスト1 問1 プロパティを作る問題。get、setの内容はとくに指定がないため、{get; set;}だけでOK。 "クラス外からアクセス可能"->アクセス修飾子はpublic。 図 クラスの確認テスト1 問1 問2 コンストラクタを作る問題。 図 クラスの確認テスト1 問2 問3 引数があるコンストラクタを作る問題。 図 クラスの確認テスト1 問3 問4 メソッドを作る問題。 図 クラスの確認テスト1 問4 問5 問4と同じメソッドを作る問題。 図 クラスの確認テスト1 問5 staticとは 以前、「メソッドにとりあえずつけて」と言っていたstatic。 メソッド以外にも、プロパティやフィールドにもつけることができる。 結論から言えば、 staticをつけると、クラスに紐づく staticなしなら、インスタンスに紐づく です。 図 staticとは なお...

11月19日(水)2コマ目

イメージ
今日、やったこと [確認テスト]クラスの確認テスト1 ODP.NET Coreのサンプル作成 今日のホワイトボード  C#のプログラムからDBアクセスするには プログラムが実行されるPCから、ネットワーク接続されているDBサーバーでSQLを実行するには、 ネットワーク接続 SQL実行 検索結果取得 を行う必要がある。 図 ODP.NET Coreがやっていること これを毎回プログラムするのはめんどくさいし、この処理は多くの人がやる。 解決するためにライブラリが用意されている。 OracleDBアクセスに特化したライブラリがODP.NET Core。この授業ではこのライブラリを使う。 サンプルプログラム CS_商品マスタを全件検索し、ID列、商品名列を取得する。 処理の流れは 1.準備 ①接続担当のOracleConnectionクラスのインスタンス生成 ②SQL実行担当のOracleCommandクラスのインスタンス生成 2.DB接続、SQL実行 ①OracleConnectionクラスのOpen()メソッドでDB接続 ②OracleCommandクラスのExecuteReader()メソッドでSQL実行 ③ExecuteReader()メソッドの戻り値OracleDataReaderクラスを使って、検索結果取得 ④OracleConnectionクラスのClose()メソッドでDB切断 のワンパターン。 作成したプログラムは以下のとおり。 Program.cs 次回は 確認テスト解説。 検索結果取得部分を解説。

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

イメージ
今日、やったこと [練習問題]練習問題4 [練習問題 解説]練習問題4 [練習問題]練習問題5 [練習問題  解説]練習問題5 今日のホワイトボード [練習問題 解説]練習問題4 正解例をあげておきます。 4-1 Cityクラスを作る。 City.cs 4-2 CityクラスのPopulationプロパティを表示する際、書式を指定して3ケタでカンマ区切りで出力。 $””の文字列に、 {変数} で文字列中に変数の値を埋め込むことができる。 さらに、{変数 :書式 }で埋め込む際に書式の指定もできる。 図 文字列中に書式指定をして変数を埋め込む Ex4_2.cs 4-3 配列citiesの要素は決まっているので、初期化で一気に代入。 Ex4_3.cs 4-4 配列中の最大値、最小値を探す問題。 Ex4_4.cs [練習問題  解説]練習問題5 正解例をあげておきます。 5-1 Employeeクラスをつくるだけ。 Employee.cs 5-2 基本給の最大値、最小値を探す。 基本給は重複しないを前提としてよしなので、らくちん。 Ex5_2.cs 5-3 基本給の降順でソート。 これくらいの要素数ならバブルソートで十分。 Ex5_3.cs 5-4 Divisionクラスをつくるだけ。 Division.cs 5-5 5-4でのDivisionクラス追加に伴い、Employeeクラスを改造。 ここでは5-1で作成したEmployeeクラスをそのまま残すため、Employee2クラスとして作成。 Emplyee2.cs 5-6 5-5で作成したEmployee2クラスを使って全従業員の配列を作成。 各従業員(Employee2クラス)の部署情報(Divisionプロパティ)には、Divisionクラスのインスタンスを代入する。 部署と従業員の関係は   1対多 。 同じ部署の従業員が同じDivisionクラスのインスタンスを参照しても、問題ないため、Divisionクラスのインスタンスは 1部署=1インスタンス のみ 。 図 インスタンスも1対多の関係に Ex5_6.cs ...

11月6日(木)2コマ目

イメージ
今日、やったこと クラスの配列(前回のつづき) [練習問題]練習問題4(クラスの配列) 今日のホワイトボード クラスの配列(前回のつづき) 前回 にひきつづき、配列の要素がクラスのインスタンスになる、クラスの配列。 パターン② 配列の要素(=クラスのインスタンス)で初期化することもできる。 図 クラスの配列 その2 Program.cs パターン③ 初期値のかわりにインスタンス生成もできる。 図 クラスの配列 その3 Program.cs 下図はまちがい。 変数array3の参照先に、2つのインスタンスがあるわけではない。 図 クラスの配列 間違いの例 次回は 練習問題の解説。  またまた、クラスの配列の練習問題。