SqlDataReader заставляет читать по одной строке за раз

Похоже, что SqlDataReader читает вперед

while (rdrMainLoop.Read())
{
    sID = rdrMainLoop.GetInt32(0);
    nearDupID = rdrMainLoop.IsDBNull(2) ? 0 : rdrMainLoop.GetInt32(2);
    sqlCmdProducer.CommandText = "update [docSVsys] set [FTSnearDupID] = '" + sID.ToString() + "' where [sID] = '" + (sID + 1).ToString() + "';";
    sqlCmdProducer.ExecuteNonQuery();
}

В этом примере я обновляю следующую строку.
Но когда я выполняю .Read(), следующая строка SqlDataReader не считывает текущее значение.
Я предполагаю, что для ускорения выполняется группирование вперед.
Есть ли способ заставить SqlDataReader читать по одной строке за раз.
Я хорошо справляюсь с грязным чтением (должно быть, поскольку я могу обновить эту строку).


person paparazzo    schedule 02.02.2013    source источник
comment
Какую реальную проблему вы пытаетесь решить? Похоже, вы должны быть в состоянии сделать это в одном выражении.   -  person Sebastian Meine    schedule 03.02.2013
comment
@SebastianMeine Да, я знаю, что могу сделать это в одном выражении. Это просто простой код для демонстрации проблемы. Моя проблема в том, что мне нужны текущие значения со времени .Read().   -  person paparazzo    schedule 03.02.2013


Ответы (1)


Использовал курсор. Курсор считывает текущее значение, ЕСЛИ это простой выбор.
Выбор с группой и обновление в цикле изменяет группу к тому времени, которое не будет отражено в следующей выборке.

person paparazzo    schedule 07.02.2013