我有一个名为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时会收到无效的强制转换异常?由datareader读入的数据库字段是Float,那么问题是什么?
答案 0 :(得分:9)
SQL Server data type CLR data type (SQL Server) CLR data type (.NET Framework)
float SqlDouble Double
SQL float映射到double数据类型,因此您应该尝试使用GetDouble
而不是GetFloat
答案 1 :(得分:0)
为什么不试试
float _float = Convert.ToSingle(myReader[FloatCol].tostring());
我没有帐篷倾向于使用Ordinal位置,因为我觉得转换所有东西都会减少问题(大部分时间)
问候