我在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;
答案 0 :(得分:0)
在c#中,您将通过索引从dataSet获取表,因为当我们从dataBase填充dataSet时,我们永远不会从db接收表名。
当我通过sp返回多个表时,我用于报告的一件事是可行的:
在每个表示表名的select语句中选择一个额外的列。
e.g 你的sp
create procedure dbo.GetData
as
begin
select '' as 'Person', * from dbo.Person;
select '' as 'Car',* from dbo.Car;
end;
在dataSet上执行foreach循环,将每个表的firstColumn名称作为DbTableName。
以下是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
}
}
答案 1 :(得分:0)
DataSet _ds=new DataSet();
DataTable _dtEmployee=new DataTable();
_dtEmployee=_ds.Tables["employee"];
或
_dtEmployee=ds.Tables[0];