将 SQL 字段的值从数字类型转换为 double。输入字符串的格式不正确。有人可以帮我解决这个问题吗?提前致谢!
新名单声明:
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
我已经解决了我的问题。我认为主要问题是我的列中有一个空值,这就是为什么它不能转换为双精度值。但是谢谢大家给我一个提示来解决它:)
所以这是解决我的问题的对策。
mylist.Add(new OTTotal
{
OTAct = (dr["OT"].ToString() == ""? 0.0 : double.Parse(dr["OT"].ToString())) + (dr["SH"].ToString() == "" ? 0.0 : double.Parse(dr["SH"].ToString())) + (dr["SHtwo"].ToString() == "" ? 0.0 : double.Parse(dr["SHtwo"].ToString())),
OTPlan = (dr["POT"].ToString() == "" ? 0.0 : double.Parse(dr["POT"].ToString()))
});
谢谢大家 :)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句