从没遇见的DataReader错误

woshimaikou 2012-03-22 12:24:22

read是获取数据时返回的OleDbDataReader
while (read.Read())
{
entity = new DoKeLe.Entity.Dish();
entity.ID = read.GetInt32(read.GetOrdinal("ID"));
entity.DishName = read.GetString(read.GetOrdinal("DishName"));
entity.DishDesc = read.GetString(read.GetOrdinal("DishDesc"));

dataList.Add(entity);
}
在红色行提示错误:应用程序中的服务器错误 DishDesc
数据库中存在该列,数据页不为空。
删掉改行就没有问题,求教 是何原因?

...全文
115 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyl8781697 2012-03-22
  • 打赏
  • 举报
回复

entity.DishDesc = Convert.ToString(read["DishDesc"]);

这个试试,出错的话再断点调试看看
还有entity这个类你既然已经在外面定义了,里面就别再实例化了呀,
直接在外面 Dish entity = new DoKeLe.Entity.Dish();
感觉重复实例化会影响效率。
cykb518 2012-03-22
  • 打赏
  • 举报
回复
entity.DishDesc = read.GetString(read.GetOrdinal("DishDesc"));
你换成 entity.DishDesc = read["DishDesc"].ToString()
试试?
woshimaikou 2012-03-22
  • 打赏
  • 举报
回复
解决了,原来是在SQL语句中 没有选择该列!
感谢大家
CalvinR 2012-03-22
  • 打赏
  • 举报
回复
加断点 多家几个就知道了
woshimaikou 2012-03-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 net_lover 的回复:]

计算机不会撒谎的。肯定没有那列
[/Quote]

数据库中确实存在该列,我直接把列名复制到程序中的
woshimaikou 2012-03-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 net_lover 的回复:]

另外程序报告的错误信息是什么
[/Quote]

报错:“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------

DishDesc

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
EnForGrass 2012-03-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 woshimaikou 的回复:]
read是获取数据时返回的OleDbDataReader
while (read.Read())
{
entity = new DoKeLe.Entity.Dish();
entity.ID = read.GetInt32(read.GetOrdina……
[/Quote]
仔细检查一下数据字段以及程序里有改变字段名称吗
happytonice 2012-03-22
  • 打赏
  • 举报
回复
用个gridview,设为自动产生列,把read绑定上,看看到底取出的是什么数据,那些列
孟子E章 2012-03-22
  • 打赏
  • 举报
回复
另外程序报告的错误信息是什么
孟子E章 2012-03-22
  • 打赏
  • 举报
回复
你可以
while (read.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
{
Response.Write("<li>" + reader.GetName(i));
}
Response.Write("<hr>");
}
打印出你的列名看
孟子E章 2012-03-22
  • 打赏
  • 举报
回复
计算机不会撒谎的。肯定没有那列
woshimaikou 2012-03-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cykb518 的回复:]

entity.DishDesc = read.GetString(read.GetOrdinal("DishDesc"));
你换成 entity.DishDesc = read["DishDesc"].ToString()
试试?
[/Quote]

不行啊 还是同样的错误!

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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