我是这么查的    
        DataTable T = datalik.ZDYCX(" * "," ZSID","");
            if (T.Rows.Count > 0)
            {
                 if(T.Rows[3]["username"].Tostring()!=Null)
                 {
                 ....省略
                 Label1.text=T.Rows[3]["username"].Tostring();
                 }
            }{}但是只要查询的数据>4条的话,那么到了if(T.Rows[3]["username"].Tostring()!=Null)
就报错,说没有任何行,该怎么判断啊?

解决方案 »

  1.   

    T.Rows[3]["username"]!=nullif(T.Rows[3]["username"].Tostring()!="")
      

  2.   

    int rowIndex=3;
    if (T.Rows.Count > 0&&T.Rows.Count <= rowIndex+1)
      {
      if(T.Rows[rowIndex]["username"].ToString()!=Null)
      {
      ....省略
      Label1.text=T.Rows[rowIndex]["username"].Tostring();
      }
      

  3.   

    DataRow中任何一列,如果是数据库空值,应该这样判断:
    if (! DBNull.Value.Equals(row[fieldName])) 
    该列如果是数据库的空值,也不会等于null的,而是DBNull.Value
      

  4.   

    你现在行数<4,那么Rows[3],正好是第四行,第四行是不存在的,当然为空了。
      

  5.   

    先判断第四行是否存在吧。if (T.Rows[3]!=null)
     {
        if (T.Rows[3]["username"].ToString()!=null)
           {
             
            }
     }
      

  6.   

    改成:
     DataTable T = datalik.ZDYCX(" * "," ZSID","");
      if (T.Rows.Count > 0)
      {
      if(T.Rows.Count>=3 && T.Rows[3]["username"].Tostring()!="")
      {
      ....省略
      Label1.text=T.Rows[3]["username"].Tostring();
      }
      }{}
    有必要还可以把
    T.Rows[3]["username"].Tostring()!=""
    改成if(T.Rows[3]["username"].Tostring()!=string.Empert)