首页 > 代码库 > 大数据导致DataReader.Close超时的异常
大数据导致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 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。