C# 为什么我在这里得到“没有数据时无效的读取尝试”?

C# 为什么我在这里得到“没有数据时无效的读取尝试”?,c#,sql-server,tsql,C#,Sql Server,Tsql,我的存储过程是简单的一行程序 CREATE PROCEDURE CheckIfFinished @pid UNIQUEIDENTIFIER AS BEGIN SELECT finished FROM Partners WHERE id = @pid END 我用我的C代码调用它,就像 using (SqlCommand cmd = new SqlCommand("CheckIfFinished", this._Conn)) {

我的存储过程是简单的一行程序

CREATE PROCEDURE CheckIfFinished    
    @pid UNIQUEIDENTIFIER 
AS  
BEGIN
    SELECT finished 
    FROM Partners 
    WHERE id = @pid   
END  
我用我的C代码调用它,就像

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();
}
Partners表中完成的列的类型为TINYINT NOT NULL默认值为0

错误的堆栈跟踪为

[InvalidOperationException:没有数据时读取的尝试无效 出席。] System.Data.SqlClient.SqlDataReader.CheckDataIsReadyInt32 columnIndex,布尔allowPartiallyReadColumn,布尔permitAsync, 字符串methodName+6531242 System.Data.SqlClient.SqlDataReader.TryReadColumnInt32 i,布尔值 setTimeout,布尔allowPartiallyReadColumn+81 System.Data.SqlClient.SqlDataReader.ReadColumnInt32 i,布尔值 setTimeout,布尔allowPartiallyReadColumn+25 System.Data.SqlClient.SqlDataReader.GetByteInt32 i+27 Survey.Models.SurveyDbModel.CheckIfFinishedGuid pid+230

我哪里出错了?

您忘记了dataReader.Read

除非您不在数据读取器上执行读取,否则数据不可用