【发布时间】:2018-04-20 10:20:52
【问题描述】:
将 SQL 字段的值从数字类型转换为双精度。 输入字符串的格式不正确。 有人可以帮我解决这个问题吗?提前致谢!
新列表的声明:
public class OTTotal
{
public double OTPLAN;
public double OTACT;
}
然后我有这段代码将数据库字段的值传递给这些公共变量。
mylist.Add(new OTTotal
{
OTAct = double.Parse(dr["OT"].ToString()) /*+ double.Parse(dr["SH"].ToString()) + double.Parse(dr["SHtwo"].ToString())*/,
OTPlan = double.Parse(dr["POT"].ToString())
});
当我运行程序并显示格式不正确时,此代码也被突出显示。
存储过程
CREATE PROCEDURE [dbo].[spTotalOverTime]
@grpID as INT = 0,
@date as DATE = '2018/3/1'
AS
BEGIN
SELECT SUM(a.Overtime) as OT, SUM(a.PlanOt) as POT, SUM(a.SunHoliday) as SH, SUM(a.SunHoliday2) as SHtwo FROM tblTimesheet a JOIN userinfo b on a.empID = b.empID JOIN tblGroup c on b.groupNo = c.groupID
WHERE YEAR(a.tsDate) = YEAR(@Date) AND MONTH(a.tsDate) = MONTH(@date) AND c.groupID = CAST(@grpID AS VARCHAR)
END
【问题讨论】:
-
您确定
dr["OT"]和dr["POT"]的双精度值正确吗? -
我确实在我的 sql 表中检查了它,所有值都是双精度的。
-
检查不是表值,而是在代码中
-
那是代码先生。如您所见,我尝试将其解析为双精度,并且将捕获数据库字段值的变量也是双精度。
-
调试它然后让我们知道
dr["OT"]和dr["POT"]的值是什么。
标签: c# sql-server stored-procedures