问题描述
“/Web”应用程序中的服务器错误。--------------------------------------------------------------------------------数据为空。不能对空值调用此方法或属性。说明:执行当前Web请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息:System.Data.SqlTypes.SqlNullValueException:数据为空。不能对空值调用此方法或属性。源错误:行31:item.ListPrice=sdr.GetDecimal(5);行32:item.UnitCost=sdr.GetDecimal(6);行33:item.ItemName=sdr.GetString(7);//就是这行出的错误,各位大侠~~行34:item.ItemImage=sdr.GetString(8);行35:item.Qty=sdr.GetInt32(9);源文件:E:BlueStarBookShopDALItemAccess.cs行:33堆栈跟踪:[SqlNullValueException:数据为空。不能对空值调用此方法或属性。]System.Data.SqlClient.SqlBuffer.get_String()+80System.Data.SqlClient.SqlDataReader.GetString(Int32i)+52BookShop.DAL.ItemAccess.GetItem(StringbookId)inE:BlueStarBookShopDALItemAccess.cs:33BookShop.BLL.ItemManager.GetItem(StringbookId)inE:BlueStarBookShopBLLItemManager.cs:25BookShop.BLL.CartManager.Add(StringbookId)inE:BlueStarBookShopBLLCartManager.cs:67Cart.Page_Load(Objectsender,EventArgse)ine:BlueStarBookShopWebShoppingCart.aspx.cs:35System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtrfp,Objecto,Objectt,EventArgse)+15System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Objectsender,EventArgse)+33System.Web.UI.Control.OnLoad(EventArgse)+99System.Web.UI.Control.LoadRecursive()+47System.Web.UI.Page.ProcessRequestMain(BooleanincludeStagesBeforeAsyncPoint,BooleanincludeStagesAfterAsyncPoint)+1061--------------------------------------------------------------------------------版本信息:Microsoft.NETFramework版本:2.0.50727.1882;ASP.NET版本:2.0.50727.1879
解决方案
解决方案二:
我在网上搜到一个解决方法如下:数据为空。不能对空值调用此方法或属性。原因:若对象是null,那么调用对象的方法例如ToString()肯定出错一般是数据库字段的值为空在grideview等数据控件常出现解决:因此建议作NULL处理请问什么叫做NULL处理?
解决方案三:
判断null~
解决方案四:
sdr.GetString(7);改为sdr.IsDBNull(7)?null:sdr.GetString(7);或者Convert.ToString(sdr.GetValue(7));
解决方案五:
item.ItemName=sdr.GetString(7);这个字段是空,判断方法参考楼上的方法
解决方案六:
引用4楼am的回复:
item.ItemName=sdr.GetString(7);这个字段是空,判断方法参考楼上的方法
解决方案七:
判断一下是否为NULL就好。
解决方案八:
经典错误。