码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-07-26 00:17:36      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   os   数据   io   

公司一个数据抓取的程序,数据量极大,读取数据的用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         finally
15         {
16             cmd.Cancel();
17             reader.Close();
18         }
19     }
20 }

大数据导致DataReader.Close超时的异常,布布扣,bubuko.com

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

标签:style   blog   http   color   使用   os   数据   io   

原文地址:http://www.cnblogs.com/benwu/p/3868478.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!