我正在使用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的简易程度是否足够,我应该不再担心开销?
谢谢!
答案 0 :(得分:5)
您应该致电ExecuteReader
并传递CommandBehavior.SingleRow
标志。
为避免耦合,您可以将DataReader转换为字典,如下所示:
return Enumerable.Range(0, reader.FieldCount)
.ToDictionary(reader.GetName, reader.GetValue);
答案 1 :(得分:0)
ExecuteScalar返回标量值,而不是行。带有命令对象的DataAdapter(可能还将参数提供给存储的proc而不是执行sql语句)也没问题。