我编写了一个返回 2 个表的存储过程:
select *
from workers
select *
from orders
我从我的 C# 应用程序中调用这个存储过程,并得到一个DataSet
包含两个表的表,一切正常。
我的问题是如何在 SQL Server 端更改表名,以便在 C# 端我能够通过名称(而不是Tables[0]
)访问它:
myDataSet.Tables["workers"]...
我试图在谷歌中寻找答案,但找不到。也许搜索关键字不够。
我编写了一个返回 2 个表的存储过程:
select *
from workers
select *
from orders
我从我的 C# 应用程序中调用这个存储过程,并得到一个DataSet
包含两个表的表,一切正常。
我的问题是如何在 SQL Server 端更改表名,以便在 C# 端我能够通过名称(而不是Tables[0]
)访问它:
myDataSet.Tables["workers"]...
我试图在谷歌中寻找答案,但找不到。也许搜索关键字不够。
您实际上无法从服务器端执行任何操作来影响这些表名 - 这些名称仅存在于客户端的 ADO.NET 代码中。
你可以做的是在客户端 - 添加表映射 - 比如:
SqlDataAdapter dap = new SqlDataAdapter(YourSqlCommandHere);
dap.TableMappings.Add("Table", "workers");
dap.TableMappings.Add("Table1", "orders");
这会将Table
(第一个结果集)“重命名”为workers
和Table1
(第二个结果集)orders
在您实际填充数据之前。所以在调用之后
dap.Fill(myDataSet);
然后,您将拥有myDataSet.Tables["workers"]
并myDataSet.Tables["orders"]
可供您使用。
TDS 协议文档(用于从 SQL Server 返回结果的协议)没有提到“结果集名称”。因此,您能够访问 ADO.net 中的结果集的唯一方法是通过您的示例中提到的数字。