请注意,问题涉及调试。
我有一个类似于以下的代码
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
胆量的任何深处,因为我是调试。在编写生产代码时,我会添加一些计数器。
想象一下我刚刚按下全部的情况( ctrl - alt - - break (,我现在想去我在哪里。我知道断点可以计数命中率,但这不是答案。我也知道受记录受属性的属性,但是"直到读取所有行并关闭SqlDataReader
"
问题是SqlDataReader
是否计数已处理的记录。
no。在SqlDataReader
内部,关于处理的行的数量没有任何状态。这是一个前向流,因此它也不容纳已经处理过的行。
我建议在您自己的代码中创建一个计数器整数,或在数据读取器周围编写包装器。