gpt4 book ai didi

c# - 从 SQLDataReader 读取结果时出现无效的转换异常

转载 作者:可可西里 更新时间:2023-11-01 03:12:45 25 4
gpt4 key购买 nike

我的存储过程:

    @UserName nvarchar(64),

AS

BEGIN
SELECT MPU.UserName, SUM(TS.Monday)as Monday //TS.Monday contains float value
FROM dbo.MapTask MT JOIN dbo.MapPU MPU
ON MPU.ID = MT.MPUID
JOIN dbo.TimeSheet TS
ON MT.TMSID = TS.ID
WHERE MT.StartDate = @StartDate_int and MPU.UserName = @UserName
GROUP BY MPU.UserName
END

在我的 C# 代码中

SqlDataReader reader = command.ExecuteReader();

while (reader.Read())
{
float monday = (float)reader["Monday"]; // Invalid cast exception
}

谁能告诉我我做错了什么?谢谢。

最佳答案

我的猜测是该值作为装箱的 double 而不是 float 返回。当您拆箱时,类型必须完全正确。所以假设我是对的并且它不是 decimal 或类似的东西,你可以使用:

float monday = (float) (double) reader["Monday"];

它会起作用的。虽然那很丑陋。如果你使用 SqlDataReader.GetFloat它应该是正确的如果它确实是一个单精度值,并且更清楚 (IMO) 发生了什么。

另一方面,您的数据可能实际上作为double 从数据库返回,在这种情况下您应该(IMO)使用:

float monday = (float) reader.GetDouble(column);

顺便说一句,您确定 float 实际上是最合适的类型吗?通常 decimal 更合适...

关于c# - 从 SQLDataReader 读取结果时出现无效的转换异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7146088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com