Sql server 2008 SqlDataReader强制它一次读取一行
看来SqlDataReader会提前读取Sql server 2008 SqlDataReader强制它一次读取一行,sql-server-2008,sqldatareader,Sql Server 2008,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() +
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();
}
在本例中,我正在更新下一行。但是当I.Read()时,下一行SqlDataReader不会读取当前值。
我想这是为了提高速度。
有没有办法强制SqlDataReader一次读取一行。
我擅长脏读(必须是,因为我可能会更新该行)。使用光标。 如果是简单的选择,光标将读取当前值。
使用group by进行选择,然后循环中的更新将更改组,这将不会反映在下一次获取中。您试图解决的实际问题是什么?看起来你应该可以用一句话来表达。@SebastianMeine是的,我知道我可以用一句话来表达。“那”只是演示问题的简单代码。我的问题是我需要.Read()时的当前值。