当您使用 SqlDataReader 时,返回集是否完全由 ExecuteReader 步骤确定,或者您是否可以通过在读取时写入源表来影响您获得的结果?这是一个非常粗糙的伪代码示例。
sc = new SqlCommand("select * from people order by last, first",db) ;
sdr = sc.ExecuteReader() ;
while (sdr.read())
{
l = (string) sdr["last"] ;
k = (string) sdr["key"] ;
if (l.Equals("Adams"))
{
sc2 = new SqlCommand("update people set last = @nm where key = @key") ;
sc2.Parameters.Add(new SqlParameter("@nm", "Ziegler"));
sc2.Parameters.Add(new SqlParameter("@key", k));
sc2.ExecuteNonQuery() ;
}
}
我在其他环境中看到了很多由于写入您正在阅读的表而导致的错误。这里记录 k 从列表的顶部 (Adams) 被撞到底部 (Ziegler)。我假设(哈!)SqlDataReader 是免疫的。真的?错误的?