0

似乎 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 一次读取一行。
我很擅长脏读(必须是因为我可能会更新该行)。

4

1 回答 1

1

使用了游标。如果它是一个简单的选择,则光标会读取当前值。
带有 group by 的 select 和循环中的更新会更改 group by 然后这将不会反映在接下来的 fetch 中。

于 2013-02-07T14:16:33.687 回答