C# 为单个查询中多个SQL选择的结果定义表名

C# 为单个查询中多个SQL选择的结果定义表名,c#,sql,ado.net,dataadapter,C#,Sql,Ado.net,Dataadapter,例如,如果我运行以下查询: select * from table1 select * from table2 然后用DB适配器(C#)运行它,我得到一个包含两个表的数据集。 如何在SQL中定义结果表的名称 我只能在SQL中执行此操作。我没有访问c代码的权限。@Timothy Khouri:可以!编辑:但不是在SQL级别 您可以在DataAdapter上使用TableMappings 如果DataAdapter的SelectCommand返回多个结果集,DataAdapter将使用表映射填充数

例如,如果我运行以下查询:

select * from table1
select * from table2
然后用DB适配器(C#)运行它,我得到一个包含两个表的数据集。 如何在SQL中定义结果表的名称


我只能在SQL中执行此操作。我没有访问c代码的权限。

@Timothy Khouri:可以!编辑:但不是在SQL级别

您可以在DataAdapter上使用TableMappings

如果DataAdapter的SelectCommand返回多个结果集,DataAdapter将使用表映射填充数据集中的相应数据表。默认情况下,第一个结果集将填充到名为“Table”的数据表中,第二个结果集将填充到名为“Table1”的数据表中,以此类推

参考文献:


回答得很好,我应该澄清我的回答:)你可以在后面重命名它们(或者像你说的那样使用映射),但基本上你只是偏离了顺序。我们遇到了一个问题,一个存储过程称为另一个存储过程,而一个开发人员将第二个存储过程更改为执行中间选择!(崩溃)@mitch我们在没有明确启用的情况下得到多个结果集,这有点奇怪-默认情况下它不是启用的,但这仍然有效。我知道,因为我正在工作(填充数据集),我们没有启用火星。然而,如果没有火星,它是如何工作的?你能发光吗?
SqlDataAdapter sqlDa = new SqlDataAdapter();
SqlCommand selectCmd = new SqlCommand();
selectCmd.CommandText = "spReturnMultpileResultSets";
selectCmd.CommandType = CommandType.StoredProcedure;
selectCmd.Connection = this.sqlConnection1;
sqlDa.SelectCommand = selectCmd;

// Add table mappings to the SqlDataAdapter
sqlDa.TableMappings.Add("Table", "Customers");
sqlDa.TableMappings.Add("Table1", "Orders");

// DataSet1 is a strongly typed DataSet
DataSet1 ds = new DataSet1();

this.sqlConnection1.Open();

sqlDa.Fill(ds);

this.sqlConnection1.Close();