2012-05-09 70 views
2

我相信在JAVA中,我們可以將數據讀取器設置爲指向結果集的第一行。我有一個SQLDataReader,有超過20列,我需要預先處理一些列並計算一些值,然後才使用整個結果集。第一次閱讀數據閱讀器之後是否可以重新閱讀數據閱讀器以獲取所選列?或者我需要將結果存儲在數據表中並在稍後讀取?在C#中多次讀取SQLDataReader?

回答

4

從MSDN文檔在http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.aspx

提供從SQL Server數據庫中讀取一個只進行流的方式。

您可以一次讀取一行,但是一旦讀完下一行就不能返回到一行。

如果需要,您可以按任意順序,任意次數讀取行中的列,並跳過字段。

while (reader.Read()) 
{ 
    var a = reader[2]; // you can skip fields 
    var b = reader[0]; // you don't have to read the fields in order 
    var c = reader[2]; // you can re-read fields 
} 
2

不,這是不可能的。

SqlDataReader MSDN上:

提供從SQL Server數據庫讀取行的只進的方式。

(重點煤礦)

你可以閱讀所有需要的數據到一個集合和經常你要遍歷副本。

1

也許你可以運行2個查詢作爲sproc的一部分。第一個查詢限於預先計算的字段的字段,其餘字段的第二個查詢。然後在你的C#中使用reader.ReadNext方法。

或者,SQL不支持計算字段,這可能會使事情變得更簡單。

但個人而言,我會將整個數據讀入List<T>進行處理...