ds.Tables["表名"].Rows[0][0].ToString()
使用表名时报错,不是表名写错了;异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
行 49:  //DataAccess.DataSet(sql,ref dt);
行 50:  //IDLabel.Text=IdStr.ToString();
行 51:  IDLabel.Text = ds.Tables["UserKtvInfo"].Rows[0]["UserKtvInfoId"].ToString();
行 52:  KtvNameLabel.Text = ds.Tables[0].Rows[0][1].ToString();
行 53:  KtvNumLabel.Text = ds.Tables[0].Rows[0][2].ToString();
 使用
ds.Tables[0].Rows[0][0].ToString()
是完全正常
有知道原因的朋友请赐教,先谢谢了~~~~~~~~~ :)

解决方案 »

  1.   

    使用
    ds.Tables[0].Rows[0][0].ToString()
    是完全正常说明是表名错了 你填充DATASET的时候的表名要和这里的名字一样才行
      

  2.   

    断点跟踪一下
    ds.Tables["UserKtvInfo"]是否为null你的ds是怎么fill的,给出这部分代码
      

  3.   

    我写了一个数据库公共类Data.cs
    代码片段如下:
                      /// <summary>
    /// 返回指定Sql语句的DataSet
    /// </summary>
    /// <param name="sqlstr">传入的Sql语句</param>
    /// <returns>DataSet</returns>
    public static DataSet DataSet(string sqlstr)
    {
    DataSet ds= new DataSet();
    OleDbDataAdapter da=new OleDbDataAdapter();
    try
    {
    openConnection();
    comm.CommandType =CommandType.Text ;
    comm.CommandText =sqlstr;
    da.SelectCommand =comm;
    da.Fill(ds);
    }
    catch(Exception ex)
    {
    throw new Exception(ex.Message); 
    }
    finally
    {
    closeConnection();
    }
    return ds;
    }然后通过以下代码调用:
    string IdStr=Request["id"];//获取当前信息ID
    string sql="select * from [KtvInfo] where KtvId='"+IdStr+"'";
    DataSet ds=Data.DataSet(sql);
    IDLabel.Text = ds.Tables["KtvInfo"].Rows[0]["KtvId"].ToString();//这样写就报错
    IDLabel.Text = ds.Tables[0].Rows[0]["KtvId"].ToString();//这样就没问题我想也是没有读取到数据而报错
    关键是不知道问题出在哪里?
    谢谢大家,继续讨论~~~~~~~~~~~~~~
      

  4.   

    IDLabel.Text = ds.Tables[0].Rows[0]["KtvId"].ToString();
    这样 是不抱错还是能取出数据库里面的数据来???将缓存清理一下在看看
      

  5.   

    呵呵,谢谢lxcnn(过客)的提示
    问题已经自己解决了
    要用表名,必须在fill的时候指定表名~~~~~~~~
    结帖了
    谢谢大家了