2016-02-06 2 views
0

Моей хранимая процедура является простым однострочникомПочему я получаю «Неверную попытку прочитать, когда данных нет»?

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(); 
} 

Колонна finished в Partners таблицы типа TINYINT NOT NULL DEFAULT 0

Ошибка трассировки стека

[InvalidOperationException:. Неверная попытка чтения, когда нет данных присутствует]
System.Data.SqlClient.SqlDataReader.CheckDataIsReady (Int32 ColumnIndex, Boolean allowPartiallyReadColumn, Boolean permitAsync, Строка имяМетода) +6531242
System.Data. SqlClient.SqlDataReader.TryReadColumn (Int32 я, булева SetTimeout, булева allowPartiallyReadColumn) +81
System.Data.SqlClient.SqlDataReader.ReadColumn (Int32 я, булева SetTimeout, булева allowPartiallyReadColumn) +25
System.Data.SqlClient. SqlDataReader.GetByte (Int32 i) +27
Survey.Models.SurveyDbModel.CheckIfFinished (Guid pid) +230

В каком месте я ошибаюсь?

ответ

2

Вы забыли dataReader.Read().

До тех пор пока вы не выполните Read() на устройстве чтения данных, данные недоступны.

Смежные вопросы