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

然后我有一些代码,其中我使用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时会收到无效的强制转换异常?数据读取器读取的数据库字段为Float,这是什么问题?

最佳答案

按照Mapping list

SQL Server data type CLR data type (SQL Server) CLR data type (.NET Framework)
float                SqlDouble                  Double


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

关于c# - 指定的强制转换对SQLDataReader上的GetFloat无效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13839754/

10-13 08:35