【发布时间】:2013-06-26 18:08:27
【问题描述】:
我正在尝试通过 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 中运行相同的查询,该值就没有问题,所以我知道它就在那里。
我对这一切都是全新的,我错过了一些基本的东西吗?或者发生了什么奇怪的事情。
谢谢!
【问题讨论】:
标签: c# wcf silverlight sqldatareader