本来正常运行,这两天忽然提示InvalidCastException: 对象不能从 DBNull 转换为其他类型,求怎么解决
“/SDLFInOut”应用程序中的服务器错误。对象不能从DBNull转换为其他类型。说明:执行当前Web请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错...
“/SDLFInOut”应用程序中的服务器错误。
对象不能从 DBNull 转换为其他类型。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidCastException: 对象不能从 DBNull 转换为其他类型。
源错误:
行 179: str = str + "<TD bgColor='#ffffff' style='BORDER-RIGHT: 1px solid; border-bottom: 1px solid' borderColor=#000000 ><FONT face='宋体' color='#000000' size='2'>" + ds.Tables[0].Rows[i]["fxd_cbr"] + "</FONT></TD>";
行 180: str = str + "<TD bgColor='#ffffff' style='BORDER-RIGHT: 1px solid; border-bottom: 1px solid' borderColor=#000000 ><FONT face='宋体' color='#000000' size='2'>" + string.Format("{0:d}", ds.Tables[0].Rows[i]["fxd_hcdt"]) + "</FONT></TD>";
行 181: str = str + "<TD bgColor='#ffffff' style='BORDER-RIGHT: 1px solid; border-bottom: 1px solid' borderColor=#000000 ><FONT face='宋体' color='#000000' size='2'>" + DBHelperOracle.DateDiff(DBHelperOracle.DateInterval.Day, Convert.ToDateTime(ds.Tables[0].Rows[i]["fxd_hcdt"]), Convert.ToDateTime(Txtjzdt.Text.Trim())) + "</FONT></TD>";
行 182: str = str + "<TD align='left' bgColor='#ffffff' style='BORDER-RIGHT: 1px solid; border-bottom: 1px solid' borderColor=#000000 ><FONT face='宋体' color='#000000' size='2'>" + ut.Left(Convert.ToString(ds.Tables[0].Rows[i]["fxd_cs"]), 10) + "</FONT></TD>";
行 183: str = str + "<TD align='left' bgColor='#ffffff' style='BORDER-RIGHT: 1px solid; border-bottom: 1px solid' borderColor=#000000 ><FONT face='宋体' color='#000000' size='2'>" + ut.Left(Convert.ToString(ds.Tables[0].Rows[i]["fxd_pm"]), 10) + "</FONT></TD>";
源文件: E:\In Out System\LFInOut\LFInOut\RptYcwh.aspx.cs 行: 181
堆栈跟踪:
[InvalidCastException: 对象不能从 DBNull 转换为其他类型。]
System.DBNull.System.IConvertible.ToDateTime(IFormatProvider provider) +56
System.Convert.ToDateTime(Object value) +32
LFInOut.RptYcwh.ButOK_Click(Object sender, EventArgs e) in E:\In Out System\LFInOut\LFInOut\RptYcwh.aspx.cs:181
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +118
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +112
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563 展开
对象不能从 DBNull 转换为其他类型。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidCastException: 对象不能从 DBNull 转换为其他类型。
源错误:
行 179: str = str + "<TD bgColor='#ffffff' style='BORDER-RIGHT: 1px solid; border-bottom: 1px solid' borderColor=#000000 ><FONT face='宋体' color='#000000' size='2'>" + ds.Tables[0].Rows[i]["fxd_cbr"] + "</FONT></TD>";
行 180: str = str + "<TD bgColor='#ffffff' style='BORDER-RIGHT: 1px solid; border-bottom: 1px solid' borderColor=#000000 ><FONT face='宋体' color='#000000' size='2'>" + string.Format("{0:d}", ds.Tables[0].Rows[i]["fxd_hcdt"]) + "</FONT></TD>";
行 181: str = str + "<TD bgColor='#ffffff' style='BORDER-RIGHT: 1px solid; border-bottom: 1px solid' borderColor=#000000 ><FONT face='宋体' color='#000000' size='2'>" + DBHelperOracle.DateDiff(DBHelperOracle.DateInterval.Day, Convert.ToDateTime(ds.Tables[0].Rows[i]["fxd_hcdt"]), Convert.ToDateTime(Txtjzdt.Text.Trim())) + "</FONT></TD>";
行 182: str = str + "<TD align='left' bgColor='#ffffff' style='BORDER-RIGHT: 1px solid; border-bottom: 1px solid' borderColor=#000000 ><FONT face='宋体' color='#000000' size='2'>" + ut.Left(Convert.ToString(ds.Tables[0].Rows[i]["fxd_cs"]), 10) + "</FONT></TD>";
行 183: str = str + "<TD align='left' bgColor='#ffffff' style='BORDER-RIGHT: 1px solid; border-bottom: 1px solid' borderColor=#000000 ><FONT face='宋体' color='#000000' size='2'>" + ut.Left(Convert.ToString(ds.Tables[0].Rows[i]["fxd_pm"]), 10) + "</FONT></TD>";
源文件: E:\In Out System\LFInOut\LFInOut\RptYcwh.aspx.cs 行: 181
堆栈跟踪:
[InvalidCastException: 对象不能从 DBNull 转换为其他类型。]
System.DBNull.System.IConvertible.ToDateTime(IFormatProvider provider) +56
System.Convert.ToDateTime(Object value) +32
LFInOut.RptYcwh.ButOK_Click(Object sender, EventArgs e) in E:\In Out System\LFInOut\LFInOut\RptYcwh.aspx.cs:181
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +118
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +112
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563 展开
展开全部
这个错误提示显示是因为数据表中的某些列有 DBNull 值,即空值,但是在代码中尝试将其转换为其他类型,比如转换为日期类型或者字符串类型时出现错误。你需要在代码中进行判断,如果某个值为 DBNull,就不要进行转换操作,或者根据实际需求进行其他处理。
具体可以在这段代码中进行判断,例如:
这样,如果 "fxd_hcdt" 列的值为 DBNull,就不会进行转换操作,而是在表格中显示一个空格。
另外,你也可以在查询数据时,使用 COALESCE 函数,将 NULL 值替换为指定的默认值,例如:
SELECT COALESCE(fxd_hcdt, '1900-01-01') AS fxd_hcdt FROM my_table;
这样,如果 "fxd_hcdt" 列的值为 NULL,就会将其替换为默认值 '1900-01-01',避免出现 DBNull 值。
微测检测5.10
2023-07-11 广告
2023-07-11 广告
IEC62133与en62133的区别如下:1. 认证机构不同:IEC62133是国际的标准,它以国际通用的标准进行生产;而en62133采用的是欧盟的标准,它使用欧盟的生产需求进行生产。2. 宗旨不同:IEC62133的宗旨是促进电气、电...
点击进入详情页
本回答由微测检测5.10提供
展开全部
这个错误通常发生在尝试将一个 DBNull 值转换为其他类型时。DBNull 表示数据库中某个字段的值为 NULL,而 NULL 值是不可以直接转换为其他数据类型的。因此,当您尝试将 DBNull 值转换为其他数据类型时,就会抛出 "InvalidCastException" 异常。
要解决这个问题,您需要检查代码中的数据处理逻辑,确保在将 DBNull 转换为其他数据类型之前,先检查该值是否为 DBNull。您可以使用 DBNull.Value.Equals 方法来检查 DBNull 值。
例如,如果您要从数据库中获取某个字段的值,并将其转换为整数类型,可以使用以下代码:
scssCopy codeobject value = reader["ColumnName"];
int result = 0;
if (value != DBNull.Value)
{
result = Convert.ToInt32(value);
}
在这个示例中,首先将数据库字段的值存储到一个 object 类型的变量中。然后,检查该值是否为 DBNull,如果不是,则将其转换为整数类型并存储到 result 变量中。
如果在处理 DBNull 值时遇到困难,您可以考虑使用一些工具或框架来简化数据处理逻辑,例如 ORM 框架或实体类生成工具等。这些工具通常提供了一些方法或属性,可以自动处理 DBNull 值的转换,避免了手动检查 DBNull 的繁琐工作。
要解决这个问题,您需要检查代码中的数据处理逻辑,确保在将 DBNull 转换为其他数据类型之前,先检查该值是否为 DBNull。您可以使用 DBNull.Value.Equals 方法来检查 DBNull 值。
例如,如果您要从数据库中获取某个字段的值,并将其转换为整数类型,可以使用以下代码:
scssCopy codeobject value = reader["ColumnName"];
int result = 0;
if (value != DBNull.Value)
{
result = Convert.ToInt32(value);
}
在这个示例中,首先将数据库字段的值存储到一个 object 类型的变量中。然后,检查该值是否为 DBNull,如果不是,则将其转换为整数类型并存储到 result 变量中。
如果在处理 DBNull 值时遇到困难,您可以考虑使用一些工具或框架来简化数据处理逻辑,例如 ORM 框架或实体类生成工具等。这些工具通常提供了一些方法或属性,可以自动处理 DBNull 值的转换,避免了手动检查 DBNull 的繁琐工作。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询