【问题标题】:How to assign table name for dataset tables如何为数据集表分配表名
【发布时间】:2014-03-17 18:28:40
【问题描述】:

我在 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;

【问题讨论】:

  • 你的 c# 代码在哪里?你能分享你的c#代码吗?

标签: c# mysql asp.net


【解决方案1】:
DataSet _ds=new DataSet();

DataTable _dtEmployee=new DataTable();

_dtEmployee=_ds.Tables["employee"];

_dtEmployee=ds.Tables[0]; 

【讨论】:

    【解决方案2】:

    在 c# 中,您将通过索引从 dataSet 中获取表,因为当我们从数据库中填充 dataSet 时,我们永远不会从 db 中收到表名。

    当我通过 sp 返回多个表时,我用于报告的一件事是:

    在表示表名的每个选择语句中选择一个额外的列。

    例如 你的sp

    create procedure dbo.GetData
    as
    begin
    
    select '' as 'Person', * from dbo.Person;
    select '' as 'Car',* from dbo.Car;
    
    end;
    

    并在您的数据集上执行 foreach 循环,以获取每个表的 firstColumn Name 作为您的 DbTableName。
    以下是伪代码,请验证,我没有编译。

    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
           }
     }
    

    【讨论】:

    • 我正在使用 sqlServer,在 sql server 中工作。为你重构mysql
    • 假设我们有超过千表示它显示第一列的千条记录显示正确的表名
    • 这不是正确的方法,而是一种可能的方法。我更多地寻找自己的方法,但最后我努力应用这种方法。第二个只是通过索引访问数据表,也许您已经像 ds.Tables[0] ..ds.Tables[1] .. ds.Tables[2] 一样访问
    猜你喜欢
    • 2012-10-09
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    相关资源
    最近更新 更多