2016-02-06 33 views
0

我的存储过程是简单的一行为什么我会在这里看到“无数据时无法读取”?

CREATE PROCEDURE CheckIfFinished  
    @pid UNIQUEIDENTIFIER 
AS 
BEGIN 
    SELECT finished 
    FROM Partners 
    WHERE id = @pid 
END 

,我从我的C#代码在Partners表来调用它像

using (SqlCommand cmd = new SqlCommand("CheckIfFinished", this._Conn)) 
{ 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.Parameters.AddWithValue("@pid", pid); 

    this._Conn.Open(); 

    using (SqlDataReader dataReader = cmd.ExecuteReader()) 
    { 
     finished = dataReader.GetByte(0) == 1 ? true : false; 
    } 

    this._Conn.Close(); 
} 

finished的类型是TINYINT NOT NULL DEFAULT 0

错误的堆栈跟踪是

[InvalidOperationException异常:无效尝试时没有数据是 本读取]
System.Data.SqlClient.SqlDataReader.CheckDataIsReady(的Int32 columnIndex,布尔allowPartiallyReadColumn,布尔permitAsync, 字符串方法名)6531242
System.Data。 SqlClient.SqlDataReader.TryReadColumn(的Int32 I,布尔 的setTimeout,布尔allowPartiallyReadColumn)81
System.Data.SqlClient.SqlDataReader.ReadColumn(的Int32 I,布尔 的setTimeout,布尔allowPartiallyReadColumn)25
System.Data.SqlClient的。 SqlDataReader.GetByte(Int32 i)+27
Survey.Models.SurveyDbModel.CheckIfFinished(Guid pid)+230

我在哪里错了?

回答

2

您忘记了dataReader.Read()

在数据读取器上未执行Read()之前,数据不可用。

相关问题