首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >指定的强制转换对GetFloat上的SQLDataReader无效

指定的强制转换对GetFloat上的SQLDataReader无效
EN

Stack Overflow用户
提问于 2012-12-12 12:26:28
回答 2查看 7.6K关注 0票数 2

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

然后,我有了一些代码,在这些代码中,我使用DataReader循环整个表。

代码语言:javascript
运行
复制
SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
while (myReader.Read())
{

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


}

我在上面的AddwithValues行上有一个错误。

“指定的强制转换无效。”

发生这种情况时,myReader.GetValue(44)显示的值为0.0。

我尝试了各种各样的方法来解决这个问题,比如在以下情况下输入一个默认值:

代码语言:javascript
运行
复制
if (Convert.ToString(myReader.GetValue(44)) == "0.0")

但这应该是不必要的,反正也没用。

当值为0.0时,为什么会得到无效的强制转换异常?数据中心读取的数据库字段是浮动的,那么问题是什么?

EN

回答 2

Stack Overflow用户

发布于 2012-12-12 15:52:15

根据Mapping list

代码语言:javascript
运行
复制
SQL Server data type CLR data type (SQL Server) CLR data type (.NET Framework)
float                SqlDouble                  Double

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

票数 9
EN

Stack Overflow用户

发布于 2012-12-12 13:14:13

为什么不试试

代码语言:javascript
运行
复制
float _float = Convert.ToSingle(myReader[FloatCol].tostring());

我不喜欢帐篷倾向于使用Oridnal位置,因为我发现转换所有东西都会减少问题(大多数情况下)

问候

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13839754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档