int myreadercount=0;
SqlCommand Acmd=new SqlCommand("select * from ata where ID='"+id+"' order by id desc",AConnStr);
SqlDataReader myreader=null;
myreader=Acmd.ExecuteReader();
while(myreader.Read())
{
myreadercount+=1;
}
string[,] array=new string[myreadercount,2];
while(myreader.Read())
{
array[i,0]=myreader["id"].ToString();
array[i,1]=myreader["title"].ToString();
i++;
}
myreader.Close();这里出现问题,array数组赋值总是不成功,一直为空,请问这是为何啊?

解决方案 »

  1.   

    因为你的reader在计数时已经读取完毕第二次的while根本就不会进去的
      

  2.   


    int myreadercount=0; 
    DataSet ds = new DataSet();
    SqlDataAdaper da = new SqlDataAdapter("select * from ata where ID= '"+id+" ' order by id desc",AConnStr);
    da.Fill(ds);
    if(ds.Tables[0].Rows.Count > 0)
    {
    string[,] array=new string[ds.Tables[0].Rows.Count,2]; 
    for(int i=0; i<ds.Tables[0].Rows.Count;i++)
    {
      array[i,0] = ds.Tables[0].Rows[i]["id"].ToString();
      array[i,1] = ds.Tables[0].Rows[i]["title"].ToString();}
    }
    }
      

  3.   


    int myreadercount=0;  
    DataSet ds = new DataSet(); 
    SqlDataAdaper da = new SqlDataAdapter("select * from ata where ID=  '"+id+"  ' order by id desc",AConnStr); 
    da.Fill(ds); 
    if(ds.Tables[0].Rows.Count  > 0) 

      string[,] array=new string[ds.Tables[0].Rows.Count,2];  
      for(int i=0; i <ds.Tables[0].Rows.Count;i++) 
      { 
      array[i,0] = ds.Tables[0].Rows[i]["id"].ToString(); 
      array[i,1] = ds.Tables[0].Rows[i]["title"].ToString();} 
      } 
    }
      

  4.   

    真的很感谢楼上热情的帮助,因为我前面已经使用了一个dataset了,此时使用就会成为嵌套而报错,这也是我为什么不的不用datareader的原因了
      

  5.   

    使用过一个DataSet?那又如何 照样可以再用啊
      

  6.   

    我用的是一个dataset函数,您看下面的代码,我是调用一个select的递归函数时这样用的
    private void main(object sender, System.EventArgs e)
    {
    string Afile=System.Configuration.ConfigurationSettings.AppSettings["Conn"];
    SqlConnection AConnStr=new SqlConnection(Afile); AConnStr.Open();
    SqlDataAdapter sda=new SqlDataAdapter("select * from class_data where parentID=0 order by id desc",AConnStr);
    SqlCommandBuilder CB=new SqlCommandBuilder(sda);
    DataSet ds=new DataSet();
    sda.Fill(ds,"info"); for(int i=0;i<ds.Tables["info"].Rows.Count;i++)
    {
    /*
    这里是很多程序
    */
    select(int.Parse(ds.Tables["info"].Rows[i]["id"].ToString()),AConnStr);
    }
    AConnStr.Close();
    }
    public void select(int id,SqlConnection AConnStr)
    {
    int myreadercount=0;
    int i=0;//THE INCREASING NUMBER
    SqlCommand Acmd=new SqlCommand("select * from class_data where parentID='"+id+"' order by id desc",AConnStr);
    SqlDataReader myreader=null;
    myreader=Acmd.ExecuteReader();
    while(myreader.Read())
    {
    myreadercount+=1;
    }
    string[,] array=new string[myreadercount,2];
    while(myreader.Read())
    {
    array[i,0]=myreader["id"].ToString();
    array[i,1]=myreader["title"].ToString();
    i++;
    }
    myreader.Close();//CLOSE THE DATA FLOW
    if(myreadercount!=0)
    {
    Width+=12;
    for(int m=0;m<myreadercount;m++)
    {
    /*
    这里是很多程序
    */
    }
    Width-=12;
    }
    }
      

  7.   

    问题已经解决,用了datareader进行递归的。