DataTable a=new DataTable();
DataTable b=new DataTable();
DataTable b=new DataTable();
DataSet ds=new DataSet();
改 thisAdapter.Fill(a);
thisAdapter.Fill(b);
thisAdapter.Fill(c);
ds.Tables.Add(a);
ds.Tables.Add(b);
ds.Tables.Add(c);

解决方案 »

  1.   

    刚才写错了,应该如下
    如果我在DSTest设计时,不从存储过程拖到设计面板里(即数据集没和存储过程绑定),那么结果是3个表table,table1,table2。如果绑定了,但是没给这三个标命名(就是在设计时,给tablename赋值),那么是4个表。如下:
     sp_aa
     0
     table
     1
     table1
     7
     table2
     1
      

  2.   

    to 外星人:
    您的
    thisAdapter.Fill(a);
    该怎么做呢?从存储过程返回的是三个表啊。也就是说,用thisAdapter把哪个表fill到a中呢?怎么去控制呢?谢谢
      

  3.   

    可以使用TableMappings来映射数据库中的表名,当使用Fill(DataSet)这种重载版本的时候所有的数据集表明都是以Table,Table1,Table2....TableN这种形式来映射数据库的,如果返回只有一个表的记录集的时候,通过Fill(DataSet,srcDataTable)就可以修改这个映射,而如果是多个表记录的话,有两个类似的办法,一种就是直接使用
    DataAdapter.TableMappings.Add("Table","a");
    DataAdapter.TableMappings.Add("Table1","b");
    DataAdapter.TableMappings.Add("Table2","c");
    然后调用Fill(DataSet)来填充DataSet即可,另外一种则是使用Fill(DataSet,srcTable)的办法,这样的话第一个表名将会是srcTable,第二个则变成srcTable1,srcTable2...srcTableN,类推,所以必须使用
    DataAdapter.TableMappings.Add("srcTable1","b");
    DataAdapter.TableMappings.Add("srcTable2","c");
    来修改这种映射.
      

  4.   

    如mmkk()言,谢谢大家捧场,立刻结帖