C# 指定的强制转换对于SQLDataReader上的GetFloat无效

C# 指定的强制转换对于SQLDataReader上的GetFloat无效,c#,asp.net,sqldatareader,C#,Asp.net,Sqldatareader,我有一个名为EarlyHoursStartTime的数据库列,它被声明为float 然后我有一些代码,我用一个数据读取器在整个表中循环 SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection); while (myReader.Read()) { cmdInsertLocation.Parameters.AddWithValue("@EarlyHoursStartTime", myReader

我有一个名为EarlyHoursStartTime的数据库列,它被声明为float

然后我有一些代码,我用一个数据读取器在整个表中循环

SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
while (myReader.Read())
{

    cmdInsertLocation.Parameters.AddWithValue("@EarlyHoursStartTime", myReader.GetFloat(44)); <- Error here


}
但这应该是不必要的,而且无论如何都不起作用

当值为0.0时,为什么会出现无效的强制转换异常?datareader读入的数据库字段是Float,那么有什么问题吗?

为什么不试试

float _float = Convert.ToSingle(myReader[FloatCol].tostring());
我不倾向于使用原始位置,因为我发现转换所有内容会带来较少的问题(大多数情况下)

按照


SQL float映射到double数据类型,因此您应该尝试使用
GetDouble
而不是
GetFloat

我认为您应该使用
GetDouble
作为@V4Vendetta的等价物,这似乎已经解决了问题。你想把它写进一个答案,这样我就可以把它标记为正确的吗?
float _float = Convert.ToSingle(myReader[FloatCol].tostring());
SQL Server data type CLR data type (SQL Server) CLR data type (.NET Framework)
float                SqlDouble                  Double