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を実行する。


