SqlCommand commf=new SqlCommand("select * from hg where hgbh='"+gh+"'",Conn);
SqlDataReader sdrf=commf.ExecuteReader();
while(sdrf.Read())
{
SqlCommand commff=new SqlCommand("select * from ckmx1 where ddbh='"+sdrf["ddbh"].ToString()+"'",Conn);
SqlDataReader sdrff=commff.ExecuteReader();
while(sdrff.Read())
{
ddbh=sdrff["ddbh"].ToString();ys=sdrff["ys"].ToString();
girdbin();
girdbin1();
girdbin2();
}
sdrff.Close(); }
sdrf.Close();
Conn.Close();
我想做到这样的功能效果..girdbin();girdbin1();girdbin2();里面还有同样的while循环..请问我该怎么办?

解决方案 »

  1.   

    里面还有同样的while循环 也就是说至少4层嵌套循环执行DataReader 
    啥程序这么复杂 你的程序效率能保证嘛 要坚信还有更好的实现方法
    这个写法..............还是放弃了吧
      

  2.   

    我也想换别的方法.可是想不到该怎么换.
    因为这里我必须有多层数据绑定
    <DataList>
      <DataGrid></DataGrid>
      <asp:Label text='获取另一个数据库的资料'></asp:label>
      <asp:label text=通过链接数据库来算列的总和,平均数等></asp:Label>
    </DataList>
    构架差不多就这样!
    如果不用上面的方法,谁能帮我想想有没其它的方法?
      

  3.   

    <DataList>
      <DataGrid></DataGrid>
      <asp:Label text='获取另一个数据库的资料'></asp:label>
      <asp:label text=通过链接数据库来算列的总和,平均数等></asp:Label>
    </DataList>----------------------
    嵌套你可以这样
    在DataList的ItemDataBound事件中,再去查询数据库绑定Lable的Text.
      

  4.   

    由于DataReader对连接是独占的,所以你每个dataReader都用同一个Connection肯定是有问题..如果你想层层嵌套来用DataReader的话,那就有多少个DataReader,就建立几个SqlConnection..SqlConnection con1=new SqlConnection("..");
    SqlConnection con2=new SqlConnection("..");SqlCommand cmd1=new SqlCommand("..",con1);
    SqlDataReader sdr1=cmd.ExecuteReader();
    while(sdr1.Read())
    {
       SqlCommand cmd2=new SqlCommand("..",con2);
       SqlDataReader sdr=cmd2.ExecuteReader();
       ..
    }类似这种,虽然效率可能不高,但还是可以用的..
      

  5.   

    建立两个连接就不如直接用datatable了
    里面的dr在循环的时候 外面的dr就一直得等着 不能释放
    或者你先把第一个循环得到得结果先循环一次做成一个参数
    然后嵌套的command直接执行一次 in (参数) 就行了
    这样至少减少round trip
      

  6.   

    DataList1_ItemDataBound这个事件中解决string sdrf= (e.Item.Controls[x] as Label).Text;
    //sdrf
    然后再查询??
      

  7.   

    TO:建立两个连接就不如直接用datatable了
    是的,嵌套DataReader确实不好,可以换别的思路,比如利用DataTable等..但如果非用DataReader不可,那只能采用多个Connection的方法..
      

  8.   

    接受意见!
    非常感谢各位的帮助!
    只是问题还在解决中.
    不知用DataTable  要怎么用呢?
    那位大哥可否给一段代码参考一下!
      

  9.   

    DataTable dt = new DataTable();
    MSDN里面一看就知道了
      

  10.   

    还是看下MSDN吧..ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.NETDEVFX.v20.chs/cpref4/html/T_System_Data_DataTable_Members.htm