if(dr.Read())]
{
a2=dr["m"].ToString();//46列是m,我想取其double型,下面这个怎么不行呢?
a2=objDr.GetDouble(45);
}

解决方案 »

  1.   

    if(.Read())
    {
    a2=dr["m"].ToString();//46列是m,我想取其double型,下面这个怎么不行呢?
    a2=dr.GetDouble(45);
    }
      

  2.   

    a2=dr.GetDouble(45);//报错:异常详细信息: System.InvalidOperationException: 不存在此行/列的数据。
    别提了,别人的数据库总共70多列,累死了
      

  3.   

    if(dr.Read())
    {
    a2=dr["m"].ToString();//46列是m,我想取其double型,下面这个怎么不行呢?
    a2=objDr.GetDouble(45);
    }==================================
    能运行????如果你要的是第一行数据,实际上给你读取的第二行数据. if (dr.Read())
    已经浪费掉了第一行
      

  4.   

    a2=dr.GetDouble(45);//报错:异常详细信息: System.InvalidOperationException: 不存在此行/列的数据。
    别提了,别人的数据库总共70多列,累死了====================
    当列数太多的时候,久不要用索引啦,数得很累
    直接写字段名
    a2=Convert.ToDouble(dr["OK"]);
      

  5.   

    如果你要的是第一行数据,实际上给你读取的第二行数据. if (dr.Read())
    已经浪费掉了第一行
    --------------------------
    你的意思它当前读的是下一行的???
      

  6.   

    winner2050(winner) 
    ----------------------
    果然是高手
      

  7.   

    每个datareader当你得到后都得调用read方法将游标置在记录头并开始读取
      

  8.   

    你说的数据表是按行从左。
    这个数据表是你sql语句排列序数还是你的数据库定义的时候,它是第46个定义的?
    如果是这样的话,你用dr 46 是不合理的