2009-12-03 20 views
0

我有一個查詢從mysql數據庫中獲取大約10000條記錄,這些記錄正在讀入.csv文件。c#datareader一直掛着

現在有70條記錄後,讀者掛起,不再做任何事情。

從來沒有在我的其他代碼,直到這(也許是我想要檢索的大數據)這個。

我的代碼是這樣的:

using (var reader = db.Retrieve(sql)) 
{ 
    while (reader.Read()) { 

     //write results to my file 

    } 
} 

代碼掛在 '而(reader.Read())'

我讀這feed但沒有給出真正的答案。或其他解決方案?

回答

0

好吧我解決了掛在我的情況。 我的查詢很複雜,一次執行它。所以我簡化了我的查詢,現在在一分鐘內我的文件被寫入了結果。

0

你有沒有嘗試過,而不寫入文件?

您是否嘗試過在沒有DataReader的情況下運行此操作來確保查詢沒問題?

如果是這樣,那麼可能值得嘗試一個更簡單的查詢,以便它只返回一個字段,如果該表定義爲具有單列主鍵,則返回主鍵。

+0

這是一樣的,已經試過 – Gerbrand 2009-12-03 16:34:31

1

您是否嘗試過在其他線程中提出的任何建議?

嘗試查看生成的SQL並在SQL Management Studio中運行它,並查看它是否也在那裏運行緩慢。

嘗試簡化您的查詢,看看是否會導致問題消失,然後嘗試添加一些內容,並查看它在工作和不工作之間究竟有什麼區別。

+0

這是一個複雜的查詢,總共從7個表中檢索28列 – Gerbrand 2009-12-03 16:37:58

+0

我要重寫查詢,我在想這也許是問題所在。但是,在執行查詢之後,我還沒有花很多時間才能收回datareader,因此可能不是查詢? – Gerbrand 2009-12-03 16:39:59

+0

接收數據註冊並不意味着查詢完成​​執行。 – 2009-12-03 16:46:30

0

QueryBrowser中返回的行的模式是什麼? mySQL是否以類似的方式加載返回的結果?

0

它會永久掛起或最終崩潰嗎?如果崩潰把它放在try catch中,看看例外是什麼。把存儲過程也放在try catch中

+0

已經嘗試了一下。它永遠掛起。我等了最長的時間是一個小時。 – Gerbrand 2009-12-03 23:07:12