如何在SqlDataReader中获取当前记录的序列号?

时间:2018-04-24 07:28:19

标签: c# sqldatareader

请注意,问题涉及调试

我的代码类似于以下

 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内部某处是否计算了已处理的记录。

1 个答案:

答案 0 :(得分:2)

没有。 Inside the SqlDataReader,没有关于已处理行数的状态。它是一个前向流,因此它不会为已处理的行保留缓存。

我建议在你自己的代码中创建一个必要的计数器整数,或者在数据读取器周围写一个包装器。