看来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一次读取一行 我很擅长阅读(我必须更新该行)。
答案 0 :(得分:1)
使用了光标。 光标读取当前值,如果它是一个简单的选择 带有分组依据的选择和循环中的更新会在那时更改组,这将不会反映在接下来的提取中。