2017-06-12 76 views
0

今天開始發生一個奇怪的問題。 每當我嘗試評估一個SqlDataReader結果時,它顯示沒有可用的數據,但如果我不嘗試它,它按預期工作。調試asp.net web表單應用程序拋出InvalidOperationException在VS 2013

例如,有此查詢:

using (SqlDataReader reader = cmd.ExecuteReader()) 
        { 
         while (reader.Read()) 
         { 
          obj.Id = int.Parse(reader[0].ToString()); 
         } 
        } 

工程確定,如果我不評價,讀者(見下面的圖片與我的意思)。

enter image description here

誰能幫我調試呢?我正在使用Visual Studio 2013 Profesional。 請注意,數據庫中有數據,如果我不評估讀者,一切正常。 cmd字符串爲Select * from MyTable

回答

0

看起來,在您的評估步驟中,您正在使用返回的記錄。您的reader.Read()將繼續到下一個記錄。

爲了確保這一點,我假設您只查找1個返回值。 如果是的話,您可以使用cmd.ExecuteScalar()命令來獲取單個值,而不需要閱讀器。

obj.id = cmd.ExecuteScalar(); 

你可能需要將結果轉換爲正確的類型,如:

obj.id = cmd.ExecuteScalar().ToString(); 

obj.id = Convert.ToInt32(cmd.ExecuteScalar()); 

如果你要測試的事實,你的評價是消耗你的.Read()結果,返回2個值,然後評估第一個值。之後您應該收到第二個值。

+0

對不起,我忘了提及,它讀取更多的值,大約100個值。 – Zippy

+0

@Zippy,所以即使你評估一個,它也會打破所有的人?它可能會將整個閱讀器元素放入評估器中,並且不會返回任何內容。 –

+0

如果我在'cmd.ExecuteReader'評估讀者,它顯示它有100行,值如預期... – Zippy

相關問題