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();
}

この例では、次の行を更新しています。
しかし、I .Read() の次の行 SqlDataReader は現在の値を読み取りません。
速度のために先にバッチ処理すると思います。
SqlDataReader に一度に 1 行ずつ読み取らせる方法はありますか。
私はダーティリードが得意です(その行を更新する可能性があるため、そうする必要があります)。

4

1 に答える 1

1

カーソルを使用しました。単純な選択の場合、カーソルは現在の値を読み取ります。
group byを使用したselectとループ内の更新により、それまでにグループが変更され、それは次のフェッチには反映されません。

于 2013-02-07T14:16:33.687 に答える