2010-11-26 64 views
0

我正在使用c#和SQL Server從數據庫獲取數據,並在頁面加載頁面上填充一些標籤。這些信息來自一個SQL視圖,它可以在單行中返回大量信息。例如:返回並使用SQL Server的單行查詢的最有效方法?

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

總是會有隻返回1行

我的項目的其餘部分使用LINQ和我最初開始走這路,但什麼是創建對象的點我只會爲此使用一次,將所有值作爲鍵值對分配給對象,然後將它們重新分配給標籤文本?似乎很多毫無意義的編碼。

使用datareader似乎也有同樣的問題。

我能看到的最簡單的解決方案(即最少代碼)是使用dataAdapter填充數據集並將數據集從DAL傳回頁面,然後直接指定標籤。但對於單行數據來說,這似乎像使用卡車運送單個番茄。

是否有像ExecuteScalar這樣返回整行而不是第一列的東西? 還是應該簡單地編寫DataAdapter就足夠了,我應該停止擔心開銷?

謝謝!

回答

5

您應該致電ExecuteReader並通過CommandBehavior.SingleRow標誌。

爲了避免耦合,可以DataReader的轉換成一個字典,像這樣:

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

但是,如何將數據從數據訪問層傳遞到標籤文本?創建一個對象或數組 - 加載它 - 然後將其加載到標籤文本中? – JumpingJezza 2010-11-26 03:20:58

0

的ExecuteScalar返回一個標值,而不是一行。具有命令對象的DataAdapter(可能還將參數提供給存儲過程而不是執行sql語句)將會很好。