float として宣言されている EarlyHoursStartTime というデータベース列があります。
次に、DataReader を使用してテーブル全体をループするコードがあります。
SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
while (myReader.Read())
{
cmdInsertLocation.Parameters.AddWithValue("@EarlyHoursStartTime", myReader.GetFloat(44)); <- Error here
}
上記の AddwithValues 行でエラーが発生します。
「指定されたキャストは無効です。」
これが発生すると、myReader.GetValue(44) は 0.0 の値を示しています。
次の場合、代わりにデフォルト値を設定するなど、これを回避するためにあらゆる種類のことを試しました。
if (Convert.ToString(myReader.GetValue(44)) == "0.0")
しかし、これは不要なはずであり、とにかく機能していません。
値が 0.0 のときに無効なキャスト例外が発生するのはなぜですか? datareader によって読み取られるデータベース フィールドは Float ですが、何が問題なのですか?