代码之家  ›  专栏  ›  技术社区  ›  JumpingJezza

从SQL Server返回和使用单行查询的最有效方法是什么?

  •  0
  • JumpingJezza  · 技术社区  · 14 年前

    我正在使用C和SQL Server从数据库中获取数据,并在页面加载时在页面上填充一些标签。这些信息来自一个SQL视图,它在一行中返回一大堆信息。如:

    SELECT 'car' AS product, 12 As daysUntilEOM, '2010-01-01' AS LastHoliday, 23.7 AS Length

    总是只有一行返回

    我的项目的其余部分使用的是LINQ,我最初是沿着这条路径开始的,但是创建一个对象的意义是什么,我将只使用一次,将所有的值作为键值对分配给对象,然后将它们重新分配给标签文本?似乎有很多无意义的编码。

    使用数据阅读器似乎也有同样的问题。

    我能看到的最简单的解决方案(即最少的代码)是使用数据适配器填充数据集,并将数据集从DAL传递回页面,然后直接分配给标签。但对于一行数据来说,这就像是用卡车运送一个番茄。

    是否有像executescalar这样的函数返回整行而不是第一列? 或者,对数据适配器进行编码的容易程度是否足够,我应该停止担心开销?

    谢谢!

    2 回复  |  直到 11 年前
        1
  •  5
  •   SLaks    11 年前

    你应该打电话 ExecuteReader 然后通过 CommandBehavior.SingleRow 旗帜。

    为了避免耦合,可以将DataReader转换为字典,如下所示:

    return Enumerable.Range(0, reader.FieldCount)
                     .ToDictionary(reader.GetName, reader.GetValue);
    
        2
  •  0
  •   Tim    14 年前

    ExecuteEscalar返回标量值,而不是行。带有命令对象(可能还向存储过程提供参数,而不是执行SQL语句)的DataAdapter将很好。