system.outofmemoryexception填充DataAdapter时?

我必须从DB中提取150K记录。 我正在使用da.Fill(ds,"Query")及其抛出system.outofmemoryexception

 Dim daGrid As New SqlDataAdapter(sqlcmd_q) daGrid.Fill(dsGrid, "Query") daGrid.Dispose() 

我只需要这个数据表。 我不能使用XML。 因为我需要将它分配给MSChartControl来显示ScotterPlot。

有什么建议?

我要检查的第一件事是你要返回多少列,以及它们的数据类型。 虽然150K记录很多,但它不应该给你一个OOMexception,除非每条记录的长度大约为13K(在32位机器上)。 这告诉我你要么返回比你需要的更多的字段,要么可能是某些字段是非常大的字符串或二进制数据。 尝试减少select语句,只返回显示所需的字段。

如果这不起作用,您可能需要从DataTable移动到自定义数据类型列表(具有相应字段的类)。

您没有指定查询。 确保它只包含您需要的列。

如果仍有问题,可以尝试切换到64位(如果您的硬件支持它,并且您有超过2 GB的可用内存)。

如果这没有帮助你必须减少内存占用。 一种可能的选择是渲染绘图而不将所有基础数​​据存储在内存中。 只需逐个加载数据,计算坐标并存储它们,而不存储基础记录。 也许你甚至可以让查询这样做。