オブジェクトを DBNull から他のタイプにキャストすることはできません。

オブジェクトを DBNull から他のタイプにキャストすることはできません。
場所 System.DBNull.System.IConvertible.ToInt32(IFormatProvider provider)
場所 System.Convert.ToInt32(Object value)
SqlCommand.ExecuteScalar メソッドの戻り値のキャストが失敗すると、以上のようなエラーが出る。この ExecuteScalar メソッドの挙動は少々クセがあるようだ。
SQL コマンドとパラメータを与えてメソッドを実行するのだが、SQL コマンドで SUM をしていると、0 ではなく、System.DbNull が返される。
そのため、null チェックとともに DBNull.Value のチェックも行わなければならない(DBNull.Value では TryParse もできない)。
// obj は Object 型の変数
if (obj == null || obj == DBNull.Value)
{
 // 戻り値がない。
}
SqlCommand.ExecuteScalar メソッド
https://msdn.microsoft.com/ja-jp/library/system.data.sqlclient.sqlcommand.executescalar%28v=VS.90%29.aspx

このブログの人気の投稿

コピーした行の挿入が表示されない時はフィルタされていないかチェック

Excel で一部の図形だけ固定する