运行报错,异常信息是“索引超出了数组界限”着实没有看出来越界在哪里啊。。
连接的access里自由29条记录啊、、 public string[] select_4()
        {
            com.CommandText="select i_id,i_name,i_sex,dept from instructors";
            string[] str=new string[200];            try
            {
                con.Open();
                dr=com.ExecuteReader();
                int i=0;
                while(dr.Read()&&i<200)
                {
                    string temp=dr.GetString(0)+'\t'+dr.GetString(2)+'\t'+
                        dr.GetString(3)+'\t'+dr.GetString(4);
                    str[i] = temp;
                    i++;
                }                if(i==0)
                    MessageBox.Show("无符合条件数据","查询结果");            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message,"数据查询这里");
            }
            finally
            {
                if(con.State==ConnectionState.Open)
                    con.Close();
            }
            return str;
        }

解决方案 »

  1.   

     while(dr.Read()&&i<200)不用在用I变量了吧!
    int i=0;
    i++
    去掉。
      

  2.   

    com.CommandText="select i_id,i_name,i_sex,dept from instructors";
    这里 只查了 4个 字段 string temp=dr.GetString(0)+'\t'+dr.GetString(2)+'\t'+
                            dr.GetString(3)+'\t'+dr.GetString(4);dr.GetString(4) 这个可以查到吗?
    索引是从0开始的吧?我也是新手,说的不对不要笑话哈
      

  3.   

    string temp=dr.GetString(0)+'\t'+dr.GetString(2)+'\t'+
                      dr.GetString(3)+'\t'+dr.GetString(4);
    str[i] = temp:
    i++这段程序第一句话正确的写法应该是:string temp=dr.GetString(0)+'\t'+dr.GetString(1)+'\t'+
                      dr.GetString(2)+'\t'+dr.GetString(3);你写的时候索引是从0开始,到最后写的是4,对应的是第五个字段,实际上数据库取出的只有4个字段,所以要报
    “索引超出了数组界限””