我在运行下面这段代码时,结果提示错误:System.IndexOutOfRangeException: 无法找到表 0。 protected void Page_Load(object sender, EventArgs e)
    {
        OleDbDataAdapter da = new OleDbDataAdapter("select * from info", my_conn);
        DataSet ds= new DataSet();
        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
        {
            str += ds.Tables[0].Rows[i]["title"];
          
        }
    }
我修改了Tables[0]里面的索引号,结果还是类似的提示,请问Tables[]是什么意思?谢谢!!

解决方案 »

  1.   

    ds都是空的
    里面没有表 肯定就 System.IndexOutOfRangeException        OleDbDataAdapter da = new OleDbDataAdapter("select * from info", my_conn);
            DataSet ds= new DataSet(); 
            da.Fill(ds);
      

  2.   

    楼上是对的,你都没往DataSet里放数据,哪儿来的表呀。
    你没有写数据填充语句
    da.Fill(ds);
    Tables就是你的DataSet里的所有表的集合,Tables[index]当然就是指其中某张表了。
      

  3.   

    Table[0]代表你当前数据源的这个表。也可以写成Table["Tablename"]中间是你表的名字。
    你出现这个错误是因为没有写da.Fill(ds);
    这样就ok了。
      

  4.   

    也就是说我可以写成Tables["info"]?出错:System.NullReferenceException: Object reference not set to an instance of an object.
      

  5.   

    出错: Object reference not set to an instance of an object、 da.Fill(ds,"info");//info为表明
    这样才能写成Tables["info"]
      

  6.   

    protected void Page_Load(object sender, EventArgs e) 
        { 
            OleDbDataAdapter da = new OleDbDataAdapter("select * from info", my_conn); 
            DataSet ds= new DataSet(); 
            da.Fill(ds,"表名");
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++) 
            { 
                str += ds.Tables["表名"].Rows[i]["title"]; 
              
            } 
        } 
    就可以了.
    如果用da.Fill(ds);的话.
    就用索引号.
    str += ds.Tables[0].Rows[i]["title"]; 
    0表示是ds中的表集合中的第一个.
      

  7.   

    Table[]是你填充得到的数据集中的表,现在没有都没有填充表,而去去那个表当然会出错.