请注意,问题涉及调试。
我的代码类似于以下
using (SqlConnection cn = new SqlConnection("Connection string")) {
cn.Open();
using (SqlCommand cmd = cn.CreateCommand()) {
cmd.CommandText = "select aField from ATABLE";
using (SqlDataReader rd = cmd.ExecuteReader()) {
while (rd.Read()) {
Debug.Print(rd[0].ToString());
// other record processing code
}}}}
当我在while
周期中断代码执行时,我可以获得已处理的记录数吗?我不介意深入挖掘SqlDataReader
胆量,因为我调试。在编写生产代码时,我会添加一些计数器。
想象一下我刚刚按下Break All( Ctrl - Alt - Break )的情况,我想现在就在哪里。我知道断点可以计算命中数,但这不是答案。我也知道RecordsAffected Property但是“只有在读完所有行并且关闭SqlDataReader
”后才会设置它
问题在于SqlDataReader
内部某处是否计算了已处理的记录。
答案 0 :(得分:2)
没有。 Inside the SqlDataReader
,没有关于已处理行数的状态。它是一个前向流,因此它不会为已处理的行保留缓存。
我建议在你自己的代码中创建一个必要的计数器整数,或者在数据读取器周围写一个包装器。