Winforms 与MS Access Grid相比,Winform DataGridview速度非常慢

Winforms 与MS Access Grid相比,Winform DataGridview速度非常慢,winforms,Winforms,当我使用MS ACCESS通过ODBC连接到一个Oracle数据库,该数据库有100000行,我可以立即看到结果,并在1秒内到达记录的末尾 用ADO.NET和Winform Datagridview做同样的事情非常慢,需要几十秒 如何获得与MS Access Gridview相同的速度?我找不到任何现成的代码来执行此操作。我想您要同时将所有行绑定到DataGridview,而绘图需要很长时间 如果您只想显示数据,那么可以非常轻松地实现虚拟模式。只需实现CellValueRequired事件。在虚

当我使用MS ACCESS通过ODBC连接到一个Oracle数据库,该数据库有100000行,我可以立即看到结果,并在1秒内到达记录的末尾

用ADO.NET和Winform Datagridview做同样的事情非常慢,需要几十秒


如何获得与MS Access Gridview相同的速度?我找不到任何现成的代码来执行此操作。

我想您要同时将所有行绑定到DataGridview,而绘图需要很长时间

如果您只想显示数据,那么可以非常轻松地实现虚拟模式。只需实现
CellValueRequired
事件。在虚拟模式下,网格仅检索显示所需的行

也可以实现DataGridView可以提供的所有操作,但需要大量代码


看一看:

谢谢,实际上似乎没有简单的方法,因为ADO.NET甚至没有包含“旧”ADO的功能(我想知道“进度”最终是什么:):

NET的设计目的是将 具有 完全断开连接的模型 需要加载所有表数据 进入“内存中”数据库(a 在访问这些数据之前。 该模型适用于web应用程序 应用程序,但它确实有一个 造成这种情况的缺陷数量 传统桌面使用起来很难 应用程序和中间层 在许多情况下,组件都是可用的。在里面 与经典COM-ADO/OLEDB的比较 技术,ADO.NET主要有以下几个方面 缺点如下:

a) 。访问大型数据库的速度非常慢 数据表。NET可以管理一个小型的 断开连接的数据库中的数据记录数 有效地建模。然而,它是有效的 如果数据量过大,则速度非常慢 由于ADO.NET,记录变大 需要将这些记录加载到 数据集对象优先和设置 表之间的关系。这个 加载时间越来越长 当记录数变为 越来越大。就是这个原因 这会导致大量内存占用 在许多情况下

b) 。ADO.NET支持顺序 转发和只读服务器游标 只有它适用于web 应用程序,但它变得非常有用 对未来的发展感到尴尬 经典桌面和中间层 因为这些 应用程序通常需要数据 访问模式能够提供 可滚动和可更新的服务器 至少有书签的游标。 目前,ADO.NET无法 提供这些功能。ADO.NET缺乏 许多基本特征 以前的COM ADO/OLEDB模型提供了。 这是一个巨大的问题,尤其是对于 桌面应用程序开发

他们的组件()看起来很棒,只是它不是免费的,难道没有人在开源中开发类似的东西吗?

找到了另一个解决方案

ADO.NET是断开连接的模型制作吗 您的简单桌面应用程序 就像一个大型的企业编程 任务

Inflution的虚拟数据对象 (VDO)可能是您的解决方案 我一直在等待


但仍然没有开源或免费的解决方案?

什么比较慢?查询速度慢吗?绘制网格慢吗?两者都有?与ADO的连接模式相比,ADO.NET的断开连接模式对于大型数据存储来说太慢了。这就是我对MS Access所做的:我不需要问任何其他问题。我已经听说过虚拟模式,但似乎没有可用的代码,我尝试设置GridView虚拟模式。似乎Datagrid需要花费大量时间来设置:(为什么做以前那么简单的事情变得如此复杂?当你设置VirtualMode时,你必须手动进行数据绑定。这是一个例子。我对Access一无所知,但恐怕winforms中没有简单的方法可以做到这一点。在Access中,你只需链接到一个oracle表并将数据源设置为its,所有这些都需要30秒h完全没有编码,当你滚动数十万条记录时,结果非常快!