我使用SqlDataREeader的时候显示“在没有任何数据时进行无效的读取尝试。”为什么呢?我把数据贴出来给大家看看!
    public static SqlDataReader returnDr(string select)
    {
        SqlConnection con = DB.CreateConnet();
        con.Open();
        SqlCommand cmd = new SqlCommand(select, con);
        SqlDataReader dr = null;
        try
        { 
            dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        }
        catch (SqlException e)
        {
            throw new Exception(e.Message, e);
        }
        return dr;
    }            string selComputerId = "select computerId from olc_computer where computerName='" + computerName + "'";
            SqlDataReader dr = DB.returnDr(selComputerId);
            if (dr.HasRows == true) 
            {
                computerId = (string)dr["computerId"];//“在没有任何数据时进行无效的读取尝试。”但是,我在数据库里面明就是查询了一行数据!有谁能讲讲呢?谢谢!
            }

解决方案 »

  1.   

    while(dr.read())
    或者
    if(dr.read())也就是要read()一次
      

  2.   


    最好不要用if(dr.read()),因为会造成第一行数据丢失,具体原因我也不太清楚!好像是因为在读SqlDataReader之前就已经读过第一行数了!你可以找找错误看看!HOHO~
      

  3.   

    我就試過讀不出第一行哦.. 汗死..不知道是什麽回事呢??你能不能給我個SqlDataReader的例子給我參考參考,我不太會用SqlDataReader哦!