日期:2014-05-18  浏览次数:20481 次

从没遇见的DataReader错误

 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 
数据库中存在该列,数据页不为空。
删掉改行就没有问题,求教 是何原因?



------解决方案--------------------
entity.DishDesc = read.GetString(read.GetOrdinal("DishDesc"));
你换成 entity.DishDesc = read["DishDesc"].ToString()
试试?
------解决方案--------------------
C# code

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

------解决方案--------------------
计算机不会撒谎的。肯定没有那列
------解决方案--------------------
你可以
while (read.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
{
Response.Write("<li>" + reader.GetName(i));
}
Response.Write("<hr>");
}
打印出你的列名看

------解决方案--------------------
用个gridview,设为自动产生列,把read绑定上,看看到底取出的是什么数据,那些列
------解决方案--------------------
探讨
read是获取数据时返回的OleDbDataReader
while (read.Read())
{
entity = new DoKeLe.Entity.Dish();
entity.ID = read.GetInt32(read.GetOrdina……

------解决方案--------------------
加断点 多家几个就知道了