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

时间:2010-11-26 03:09:25

标签: c# asp.net sql-server datareader

我正在使用c#和SQL Server从数据库中获取数据,并在pageload上的页面上填充一些标签。信息来自SQL视图,它在一行中返回一大堆信息。例如:

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

总会只返回1行

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

使用datareader似乎也有同样的问题。

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

是否有类似ExecuteScalar的东西返回整行而不是第一列? 或者,编辑DataAdapter的简易程度是否足够,我应该不再担心开销?

谢谢!

2 个答案:

答案 0 :(得分:5)

您应该致电ExecuteReader并传递CommandBehavior.SingleRow标志。

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

return Enumerable.Range(0, reader.FieldCount)
                 .ToDictionary(reader.GetName, reader.GetValue);

答案 1 :(得分:0)

ExecuteScalar返回标量值,而不是行。带有命令对象的DataAdapter(可能还将参数提供给存储的proc而不是执行sql语句)也没问题。