2015-07-10 524 views
1

我必须从SQL表中读取非常大的数据,大约300000行,并将其写入我的应用程序(.net应用程序和使用C#)中的文本文件。我有一个存储过程来读取数据,而我使用DataAdapterDataSet在我的代码,以获得这些数据,但我得到的错误System.ComponentModel.Win32Exception:等待操作超时

等待操作超时

当执行dataAdapter.Fill(dataSet)。我试图改变超时值,但它没有奏效。我尝试了不同的方法,但似乎没有任何工作。它适用于几行,但不适用于大数据。我不能抓住小数据,因为他们需要在一个文本文件中的整个数据

+0

请提供您的一些代码。 – Envil

回答

1

第一次和非常重要的变化我did--我改变了我的DateTime对象shortDate(如startDate.ToShortDateString()),所以它删除了一部分时间,从我的日期,它帮助了很多与我的SQL存储过程datetime param。

第二变化---直接从SqlDataReader阅读并直接与Read方法写入文本文件,因为DataTable不会坚持长文件(如420000KB)

using (SqlDataReader rdr = comm.ExecuteReader()) 
{        
    while (rdr.Read()) 
    { 
    file.WriteLine(rdr.GetString(0), true); 
    } 
} 

第三变化 - 我增加了我的超时

comm.CommandTimeout = 600; (e.g for 10min) 
+0

感谢大家的帮助,我的代码现在工作正常。 ;) – bj1

0

看看你是否可以拆分一个查询到多个并同时执行它,并加入完成所有提取结果。

甚至使用DataReader将有所帮助。

+0

Thx.I已经尝试过DataReader,它给了我同样的错误。公司不想拆分查询。这就是问题 – bj1