2023/02/15

SQLiteでのDBNull.Value.Equals(value)

SQLiteでExecuteScalarで値を取得する際に

  1. var value = cmd.ExecuteScalar();
  2. if (DBNull.Value.Equals(value))
  3. {
  4. // 存在しない
  5. }
  6. else
  7. {
  8. // 存在する
  9. }

としても上手く判定出来ない?デバッグ作業で分かったのは

  1. if (DBNull.Value.Equals(value)
  2. {
  3. // 存在しない
  4. }
  5. else if (value == null)
  6. {
  7. // null
  8. }
  9. else
  10. {
  11. // 存在する
  12. }

とすると「存在しない」ではなく「null」になる。これが現在利用している環境のバグなのか仕様なのか謎だな!

追記 2023.2.16 18:25
Windows 11 Pro 22H2 ビルド 22621.1265
Visual Studio Community 2022 Ver. 17.4.4
Sysrem.Data.SQLite.Core Ver. 1.0.116

0 件のコメント:

コメントを投稿