数据为空。不能对空值调用此方法或属性

e78640946 2011-05-18 12:36:35
“/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:\BlueStarBookShop\DAL\ItemAccess.cs 行: 33

堆栈跟踪:


[SqlNullValueException: 数据为空。不能对空值调用此方法或属性。]
System.Data.SqlClient.SqlBuffer.get_String() +80
System.Data.SqlClient.SqlDataReader.GetString(Int32 i) +52
BookShop.DAL.ItemAccess.GetItem(String bookId) in E:\BlueStarBookShop\DAL\ItemAccess.cs:33
BookShop.BLL.ItemManager.GetItem(String bookId) in E:\BlueStarBookShop\BLL\ItemManager.cs:25
BookShop.BLL.CartManager.Add(String bookId) in E:\BlueStarBookShop\BLL\CartManager.cs:67
Cart.Page_Load(Object sender, EventArgs e) in e:\BlueStarBookShop\Web\ShoppingCart.aspx.cs:35
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +33
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +47
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1061




--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.1882; ASP.NET 版本:2.0.50727.1879
...全文
730 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qgqch2008 2011-05-31
  • 打赏
  • 举报
回复
经典错误。
古兰色回忆 2011-05-31
  • 打赏
  • 举报
回复
判断一下是否为NULL就好。
meceky 2011-05-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 am 的回复:]

item.ItemName = sdr.GetString(7);
这个字段是空,判断方法参考楼上的方法
[/Quote]
baysos 2011-05-18
  • 打赏
  • 举报
回复
判断null~
e78640946 2011-05-18
  • 打赏
  • 举报
回复
我在网上搜到一个解决方法如下:

数据为空。不能对空值调用此方法或属性。
原因:
若对象是null,那么调用对象的方法例如ToString()肯定出错一般是数据库字段的值为空
在grideview等数据控件常出现
解决:因此建议作NULL处理

请问什么叫做NULL处理?
am 2011-05-18
  • 打赏
  • 举报
回复
item.ItemName = sdr.GetString(7);
这个字段是空,判断方法参考楼上的方法
机器人 2011-05-18
  • 打赏
  • 举报
回复
sdr.GetString(7);

改为

sdr.IsDBNull(7) ? null : sdr.GetString(7);

或者

Convert.ToString(sdr.GetValue(7));

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧