/// <summary>
        /// 得到该节点下的最大值Id
        /// </summary>
        /// <param name="linkid"></param>
        /// <returns></returns>
        public Test GetMaxId(int linkid)
        {
            try
            {
                String sql = "select max(Id) from test3 where linkid=@linkid" ;
                SqlDataReader sdr = DBHelper.GetReader(sql,new SqlParameter("@linkid",linkid));
                if (sdr.Read())
                {
                    Test test = new Test();                    test.Id = Convert.ToInt32(sdr["Id"].ToString());
                    test.Name = (string)sdr["name"];
                    test.LinkId = (int)sdr["LinkId"];
                    test.Classid = (int)sdr["ClassId"];
                    sdr.Close();
                    return test;
                }
                else
                {
                    sdr.Close();
                    return null;
                }
            }
            catch (Exception e)
            {
                throw e;
            }
            
        }
直接出异常   请高手指点

解决方案 »

  1.   

    很显然 select 列表中 没有 sdr中索引列名
      

  2.   

    你就
    select max(Id)
    出一个字段,怎么能读取到  test.Id = Convert.ToInt32(sdr["Id"].ToString());
      test.Name = (string)sdr["name"];
      test.LinkId = (int)sdr["LinkId"];
      test.Classid = (int)sdr["ClassId"];这4个字段的内容呢?
      

  3.   

    String sql = "select max(Id) from test3 where linkid=@linkid" ;
      SqlDataReader sdr = DBHelper.GetReader(sql,new SqlParameter("@linkid",linkid));
      if (sdr.Read())
      {
    int maxID = 0;
    if(sdr[0]!=DBNull.Value)
    {
    maxID = ConvertToInt32(sdr[0].ToString());} sdr.Close();
    sql = "select * from test3 where Id=" + maxID  ;
    sdr = DBHelper.GetReader(sql,new SqlParameter("@linkid",linkid));
    if (sdr.Read())
      {
      Test test = new Test();  test.Id = Convert.ToInt32(sdr["Id"].ToString());
      test.Name = (string)sdr["name"];
      test.LinkId = (int)sdr["LinkId"];
      test.Classid = (int)sdr["ClassId"];
      sdr.Close();
      return test;
      }
      else
      {
      sdr.Close();
      return null;
      }  }
      

  4.   

    支持2楼,楼主你的sql语句中缺少了那些下面要用到的字段,把它们都补上吧