Silverlight アプリケーションの WCF サービスを介して SQL データベースにアクセスしようとしていますが、何らかの理由で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: データが存在しない場合の無効な読み取り試行。
しかし、本当に困惑しているのは、oReader.GetOrdinal("SystemVersNo")
、またはを呼び出すと、oReader.GetName(0)
両方とも正しい値で返されることです。序数の位置がゼロで返されるのに、その位置で読み取る値が見つからないのはどうしてですか? SQL Server Management Studio で同じクエリを実行すると、値は問題なく表示されるので、そこにあることがわかります。
私はこれにまったく慣れていません。何か基本的なことが欠けていますか? それとも何かファンキーなことが起こっているのでしょうか。
ありがとう!