我試圖通過WCF服務訪問一個Silverlight應用程序的SQL數據庫,由於某種原因,我的SqlDataReader
對象不斷給我錯誤。我只是試圖從數據庫中檢索一個單一的值。SqlDataReader不識別列序號值
這是我的代碼現在:
using(SqlConnection oConnection = new SqlConnection(ConnectionString))
{
SqlCommand oCommand = new SqlCommand("SELECT SystemVersNo FROM dbo.CoPolicyPointer WHERE SystemAssignId = '58859700000000'");
CompositeType oCustomer = new CompositeType();
SqlDataReader oReader = null;
oConnection.Open();
oCommand.Connection = oConnection;
oReader = oCommand.ExecuteReader();
if (oReader.HasRows)
{
oCustomer.SRVNo = oReader.GetValue(0).ToString();
}
else
{
oCustomer.SRVNo = "No rows returned.";
}
oConnection.Close();
return oCustomer;
}
oReader.HasRows
返回true,但oReader.GetValue(0)
(或oReader.GetAnythingElse,對於這個問題)拋出一個錯誤:
System.InvalidOperationException: Invalid attempt to read when no data is present.
的事情,真的絆倒不過,如果我撥打oReader.GetOrdinal("SystemVersNo")
或oReader.GetName(0)
,他們都會返回正確的值。它是如何返回零的序數位置,但它不能找到一個值在該位置閱讀?如果我在SQL Server Management Studio中運行相同的查詢,那麼值就沒有問題了,所以我知道它在那裏。
我是全新的,我缺少一些基本的東西嗎?或者有什麼奇怪的事情發生。
謝謝!
啊我看到了,我沒有意識到'Read()'方法實際上讓讀者向前移動,而不是僅僅返回它是否可以,我不認爲這是必要的,因爲我不需要一個循環。謝謝! –