将大表加载到DataSet时出现OutOfMemoryException

时间:2013-03-20 13:52:38

标签: devexpress out-of-memory gridcontrol large-data

我想从包含2M记录的SQL Server表中检索数据。我正在使用Devexpress GridControl并尝试过这样一个简单的代码:

   DataTable dt = new DataTable();
   String sqlString = "select * from LARGETABLE left join TABLEB on LARGETABLE.ID=TABLEB.PARENTID";
   SqlDataAdapter da = new SqlDataAdapter(sqlString, sqlConnection);
   da.Fill(dt);
   bindingSource1.DataSource = dt;

...

   gridControl1.DataSource = bindingSource1

执行第da.Fill(dt)行后,某段时间后会出现 OutOfMemoryException 错误。

Microsoft Server Studio确实加载表没有问题,并显示网格中的所有2M +行。是否可以在c#中构建这样的数据浏览器并加载大型数据集而不会耗尽内存?

1 个答案:

答案 0 :(得分:1)

我认为通过2M和'DataTable'绑定BindingSource记录并不是一个好主意。由于您使用的是DevExpress网格控件,我建议您使用 server data-binding modes (同步或异步)。您可以在“Regular Binding Mode vs Regular Server Mode vs Instant Feedback Mode”文章中阅读有关此概念的更多信息 要从服务器模式开始,请使用以下方法文章: Server Mode: Binding to Data Source Using 'LINQ to SQL Classes'

相关问题