首页 > 学院 > 开发设计 > 正文

大数据导致DataReader.Close超时的异常

2019-11-17 03:00:56
字体:
来源:转载
供稿:网友

大数据导致DataReader.Close超时的异常

公司一个数据抓取的程序,数据量极大,读取数据的用IDataReader的Read方法来进行数据处理,在测试的时候我想跑一部分数据后跳出循环,即break; 然后关闭datareader,但是在执行datareader.close()方法的时候出现了“超时异常”的错误, 查看了一下MSDN对Close方法的说明的备注 如下:

当使用SqlDataReader将关联的SqlConnection用于任何其他用途时,必须显式调用Close方法。

Close方法填写输出参数的值、返回值和RecordsAffected,从而增加了关闭用于处理大型或复杂查询的SqlDataReader所用的时间。如果返回值和查询影响的记录的数量不重要,则可以在调用Close方法前调用关联的SqlCommand对象的Cancel方法,从而减少关闭SqlDataReader所需的时间。

原来执行Command的Cancel方法就可以解决这个问题。

 1 public void TestDataReader() 2 { 3     using (IDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection)) 4     { 5         try 6         { 7             while (reader.Read()) 8             { 9                 //处理数据10                 //break; 11                 //处理数据12             }13         }14         finally15         {16             cmd.Cancel();17             reader.Close();18         }19     }20 }

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表