从SQL端的存储过程更改返回的表名

时间:2012-05-22 07:41:48

标签: c# sql sql-server

我编写了一个返回2个表的存储过程:

select * 
from workers

select *
from orders

我从我的C#应用​​程序中调用此存储过程并获得带有两个表的DataSet,一切正常。

我的问题是如何更改SQL Server端的表名 ,以便在C#端我可以通过名称(而不是Tables[0])访问它:

myDataSet.Tables["workers"]...

我试图在Google中寻找答案但却找不到答案。也许搜索关键字还不够。

2 个答案:

答案 0 :(得分:4)

您无法从服务器端真正做任何事情来影响这些表名 - 这些名称仅存在于客户端,在您的ADO.NET代码中。

可以做的是在客户端 - 添加表映射 - 类似于:

SqlDataAdapter dap = new SqlDataAdapter(YourSqlCommandHere);
dap.TableMappings.Add("Table", "workers");
dap.TableMappings.Add("Table1", "orders");

在您实际填充数据之前,这会将Table(第一个结果集)“重命名”为workersTable1(第二个结果集)为orders。所以在致电

之后
dap.Fill(myDataSet);

然后您可以使用myDataSet.Tables["workers"]myDataSet.Tables["orders"]

答案 1 :(得分:0)

TDS Protocol documentation(用于从SQL Server返回结果的协议)未提及“结果集名称”。因此,您在ADO.net中访问结果集的唯一方法是使用示例中提到的数字。