代码如下:    string strsql = " select bh,name from t1  where ..."; 
             SqlDataAdapter adapter = new SqlDataAdapter(strsql ,con); //其中con为数据库连接字符串 
             DataTable dt = new DataTable ();
             adapter.Fill(dt);           //检索到多条记录
             foreach( DataRow row in dt.rows )
              {
                  string bh = row["bh"].toString();
                  string name = row["name"].t0String();       //检索出的数据给变量赋值
                  string strsql1 = " select * from t2  where bh='"+bh+"' and name ='"+name+"'";     
             SqlDataAdapter adapter1 = new SqlDataAdapter(strsql1 ,con); //其中con为数据库连接字符串 
                   DataSet ds = new DataSet();
                   adapter1.Fill(ds);
              }  
这样一个循环执行多次后我能将检索出的记录都集中到一个DataSet中吗??而不是这个DataSet中只保留最后一次查询的结果!!!!请高手指教正确的做法,谢谢了!!!!

解决方案 »

  1.   

    你在adapter1.Fill(ds);这里改成adapter1.Fill(ds, row["name"].ToString());就可以了。这样每次填充的是DataSet中的一个新表,标的名字就是row["name"].ToString()。另外你的DataSet ds = new DataSet();要放在foreach循环的外面定义。
      

  2.   

    你要使用这张表的时候这么用ds.Table[row["name"].ToString()]
      

  3.   

    你这样应该是不能集中到一个DataSet中,试一下插入一个临时表中不好吗?在第二次查询时: string strsql1 = " insert into t3 (select * from t2  where bh='"+bh+"' and name ='"+name+"'");
      

  4.   

    to byhum(相见不如怀念) : 你的意思是不是循环结束将所有的结果都填充到临时表t3中 ,使用的时候直接查t3表 ??那我照povo(povo) 的做法将结果全部填充到DataSet中好象意思也差不多啊!!!请问二者之间有很大不同吗?
      

  5.   

    to byhum(相见不如怀念) : 你的意思是不是循环结束将所有的结果都填充到临时表t3中 ,使用的时候直接查t3表 ??那我照povo(povo) 的做法将结果全部填充到DataSet中好象意思也差不多啊!!!请问二者之间有很大不同吗?--------------------------------------------
    没什么不同,差不多,不过我想通过我的方法查询出来的数据下次还可以再用嘛,而且会比占用DataSet来说速度会快一些吧如果数据量很大的话,全部插入DataSet中会不会影响速度呢?
      

  6.   

    foreach( DataRow row in dt.rows )
    {
            string bh = row["bh"].toString();
            string name = row["name"].t0String();       //检索出的数据给变量赋值
            string strsql1 = " select * from t2  where bh='"+bh+"' and name ='"+name+"'";     //在这步就开始插入临时表t3
    我觉得这样省了再一次查询,再一次填充,要使用的时候直接读就是了