程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 大數據導致DataReader.Close超時的異常,超時異常

大數據導致DataReader.Close超時的異常,超時異常

編輯:C#入門知識

大數據導致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         finally
15         {
16             cmd.Cancel();
17             reader.Close();
18         }
19     }
20 }

http網絡異常或者超時給出提示

路過,表示同樣沒明白樓主要表達的意思,悲催啊
 

aspnet 怎 捕獲 頁面超時的 異常

SqlCommand.TimeOut=0
這樣就永不超時了

想捕獲的話就try catch 就行了啊
try
{

}
catch (Exception ex)
{

}
把代碼放到try快中,這樣就把異常吃掉了
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved