1

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

select * 
from workers

select *
from orders

我从我的 C# 应用程序中调用这个存储过程,并得到一个DataSet包含两个表的表,一切正常。

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

myDataSet.Tables["workers"]...

我试图在谷歌中寻找答案,但找不到。也许搜索关键字不够。

4

2 回答 2

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"]可供您使用。

于 2012-05-22T08:01:41.770 回答
0

TDS 协议文档(用于从 SQL Server 返回结果的协议)没有提到“结果集名称”。因此,您能够访问 ADO.net 中的结果集的唯一方法是通过您的示例中提到的数字。

于 2012-05-22T08:01:20.683 回答