代码之家  ›  专栏  ›  技术社区  ›  Micah Montoya

数据库中的C#数据集数据表位置

  •  1
  • Micah Montoya  · 技术社区  · 7 年前

    通常我会使用索引,但我必须知道存储过程中的表顺序。

    我在想,如果有一种方法可以在存储过程中给一个表命名,然后我可以在代码中使用该名称作为索引,然后理论上可以在不破坏任何内容的情况下更改存储过程。但是我找不到为表指定名称的方法。

    那么,如果有的话,有人有没有一个解决方案来知道从SQL Server数据库获取的数据集中的哪个表在哪里?

    编辑以查看我是否可以用示例更好地解释:

    在存储过程中,我查询并返回4个表(表: 苹果 , 橘子 , , 桃子 )

    CREATE PROCEDURE GetTables AS
    BEGIN
        SELECT * from apples ;
        SELECT * from oranges ;
        SELECT * from pears ;
        SELECT * from peaches ;
    END
    

    DataSet

    DataTable ),我一般会这样做

    var dt2 = dataset.tables[1]; //oranges
    

    apples, strawberries, oranges, pears, peaches
    

    橘子 ,但现在我开始 草莓 .

    我正在寻找一种方法来标记结果,以便 草莓 添加后,我的代码将始终 橘子 .

    1 回复  |  直到 7 年前
        1
  •  1
  •   Alejandro    7 年前

    调用存储过程最终需要了解客户机程序的输入参数和预期结果集,这实际上会在它们之间产生耦合,因为在两者之间添加额外的结果集将破坏毫无戒备的客户机,这与删除或重新排序客户机相同。

    你的担心是正确和有根据的。如果要保持客户端代码不变,您必须保留一些更改服务器端代码的内容,其中包括:

    • 输入参数类型和名称,并根据您调用SP的方式进行排序。
    • 列名,以及它的顺序,这取决于客户端访问列名的方式。
    • 行顺序有时可能很重要。

    自从我回来以后 苹果、桔子、梨、桃子 归来 苹果、草莓、桔子、梨、桃子 在中间添加结果集,依赖于排序的代码将失败,使其成为 零钱 . 在这种情况下,正确的做法是返回 苹果、桔子、梨、桃子、草莓