C#
対処1: nullをDBNull.Valueに変換する拡張メソッドを作る
出典: C# DataAdapter.Update() で DBNull 例外が出た時の最短対処 — 最短対処:コピペで動く3つの書き方 / 対処1: nullをDBNull.Valueに変換する拡張メソッドを作る
var p = new SqlParameter("@bikou", SqlDbType.NVarChar);
p.Value = (textBoxBikou.Text == "" ? null : textBoxBikou.Text).ToDbValue();
cmd.Parameters.Add(p);
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です
Source収録記事
この snippet は記事の「最短対処:コピペで動く3つの書き方 / 対処1: nullをDBNull.Valueに変換する拡張メソッドを作る」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。
同じ記事から
7 件// NGパターン:null をそのまま渡してる var p = new SqlParameter("@bikou", SqlDbType.NVarChar); p.Value = textBoxBikou.Text == "" ? null : textBoxBikou.Text; // ← ここで爆発の種を仕込む cmd.Parameters.Add(p);未収録
パターン1: SqlParameterにC#のnullをそのまま渡している
#58ea87804b60
public static class DbNullExtensions { /// <summary>null なら DBNull.Value、そうでなければ自身を返す</summary> public static object ToDbValue(this object value)未収録
対処1: nullをDBNull.Valueに変換する拡張メソッドを作る
#1f6439a1164b
// 値を入れる前に DBNull.Value に揃える row["bikou"] = string.IsNullOrEmpty(input) ? (object)DBNull.Value : input;未収録
対処2: DataTableに書き戻す時もDBNull.Valueで揃える
#b388f0f8c525
string bikou = row["bikou"] is DBNull ? null : (string)row["bikou"];未収録
対処3:取得時はis DBNullでガードしてから受ける
#6bc81cb11236
public static T AsOrDefault<T>(this object value) where T : class { return value is DBNull ? null : value as T; }未収録
対処3:取得時はis DBNullでガードしてから受ける
#c3676af36354
public static T? AsOrNull<T>(this object value) where T : struct { return value is DBNull ? (T?)null : (T)value; }未収録
値型(int / DateTime)にはasが使えない
#56e4fca462e0
