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_オリンピックテーブルは以下のようになっている。

図 cs_オリンピックテーブル

開催都市、金、銀、銅がNULLの場合は、空白を出力。


次回は

検索結果が単一値なSQLを実行する。