2012-05-22 48 views
1

返回的表名從存儲過程我已經寫了一個存儲過程返回兩個表:更改在SQL側

select * 
from workers 

select * 
from orders 

我把從我的C#應用​​程序這個存儲過程並獲得DataSet兩個表,一切工作正常。

我的問題是如何改變的表在SQL Server端命名因此,在C#身邊,我將能夠通過一個名字(而不是Tables[0])來訪問它:

myDataSet.Tables["workers"]... 

我試圖在谷歌尋找答案,但無法找到它。也許搜索關鍵字是不夠的。

+0

你說你想改變SQL端的表名?這個問題似乎更多地涉及到C#和可能ADO.NET。數據集不是SQL Server系統的一部分,就像你引用它們一樣 – Namphibian

+0

你可以在C#中使用枚舉來獲得非常相似的東西,並且你將從intellisense中受益。 – Dan

回答

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

+0

謝謝你的詳細解答 – user1409590

0

TDS Protocol documentation(這是用於從SQL Server返回結果的協議)沒有提及「結果集名稱」。因此,您將能夠訪問ADO.net中的結果集的唯一方法就是您的示例中提到的數字。

+0

謝謝你的詳細解答 – user1409590