2014-02-18 61 views
0

我在MySQL中創建三個存儲過程。它工作正常。現在我讀了使用C#的第三個過程。它返回兩個名爲table,table1的表。我如何分配每個表的名稱?而使用超過8或10如何爲數據集表分配表名

create procedure dbo.GetPeople 
as 
begin 
    select * from dbo.Person; 
end; 

create procedure dbo.GetCars 
as 
begin 
    select * from dbo.Car; 
end; 

-- This gives the same result as before 
create procedure dbo.GetSomething 
as 
begin 
    exec dbo.GetPeople; 
    exec dbo.GetCars; 
end; 
+1

哪裏是你的C#代碼?你能分享你的C#代碼嗎? –

回答

0

在C#中你將獲得指數從表中的數據集,因爲當我們從數據庫填充DataSet那麼我們從來沒有收到表的名字,我真的很困惑的表名從數據庫。

一件事是允許通過爲我所用,當我通過SP返回多個表的報告是:

在每個select語句reprent表名選擇一個額外的科拉姆。

e.g 您的SP

create procedure dbo.GetData 
as 
begin 

select '' as 'Person', * from dbo.Person; 
select '' as 'Car',* from dbo.Car; 

end; 

,並做foreach循環在你的數據集,以獲取每個表作爲DbTableName的firstColumn名稱。
以下是dumy代碼請驗證,我沒有編譯。

foreach(DataTable tbl in dataSet.Tables) 
{ 
     if(tbl.columns[0].name=="Person") 
     { 
     //your code to do with table Person 
     }esle if(tbl.columns[0].name=="Car") 
     //your code to do with table Car 
     } 
} 
+0

這不行。我從dbo.person那裏得到*附近的錯誤。 – user3085540

+0

我正在使用sqlserver,在sql server中工作。爲你重新構造mysql –

+0

它將第一列顯示爲表名。 – user3085540

0
DataSet _ds=new DataSet(); 

DataTable _dtEmployee=new DataTable(); 

_dtEmployee=_ds.Tables["employee"]; 

_dtEmployee=ds.Tables[0];