【问题标题】:Managing a data table管理数据表
【发布时间】:2011-02-22 16:13:13
【问题描述】:

我必须编写一个软件来处理来自 SQL 数据库的数据。

表格可能很大(> 500,000 行)。

我必须通过一个表格来管理显示,该表格应该用于显示下一行、上一行、移动到开头和结尾。

带有 Recordset 的 ADO 可以使用 MoveNext、MoveFirst、MovePrevious 和 MoveLast 方法轻松地做到这一点。

问题是我觉得这有点慢。此外,对于写入(插入、删除、更新),我已经在使用 ADO.NET。

在 ADO.NET 中,我们无法处理真正的游标。唯一可用的(通过 DataReader)是 forwardonly 游标。

我也无法加载数据集,因为这需要大量时间和内存。

我的问题是:有人知道用 ADO.NET 处理这种表的解决方案吗?

它是一个桌面应用程序,准确地说是一个 ERP。

编辑:

我尝试实现分页系统,效果很好。但是,ERP 应用程序的结果从不按 id 排序,我知道对于分页系统,结果必须按 ID 排序。

所以,如果有人知道另一种方法,或者如何使用此约束实现分页系统,我会全力以赴。

【问题讨论】:

  • 我觉得你需要看看分页的概念。
  • 它是什么类型的应用程序(ASP.NET、WebForms 等)?
  • @Xavinou,我认为@JohnFx 不是在谈论语言(C#、VB.NET、F#),而是在谈论平台。它会在网络上运行,还是桌面应用程序,还是其他什么?
  • @JohnFx,它是一个桌面应用程序,准确来说是一个 ERP。
  • @Xavinou - 我问的原因是您可以在查询中使用人工 RowNumber 来进行分页,而无需依赖 ID 字段。但是,SQL、Oracle 和 DB2 的实现会有所不同。

标签: c# sql ado.net ado


【解决方案1】:

尝试查看分页...这是仅抓取您想要显示的内容的概念。

您不想使用游标,因为这需要在请求之间保持连接打开(在网络应用程序中通常被认为是一个坏主意)。

以下是我遇到的可能会有所帮助的内容: http://www.asp.net/data-access/tutorials/efficiently-paging-through-large-amounts-of-data-cs

编辑:好吧,引用的示例对桌面应用程序没有多大帮助,但分页的概念仍然有效。

【讨论】:

    【解决方案2】:

    使用 ADO.NET,您可以一次使用 DataAdapter to fill pages of data,基本上就是您在屏幕上显示的内容。当您单击到最后时,它会准确获取显示最后一个屏幕所需的数据。它非常快,应该正是您所需要的。

    【讨论】:

      【解决方案3】:

      实际实现会因您构建应用所采用的特定技术而异,但您可能应该使用分页策略来实现。

      也就是说,一次抓取一些可管理的行数(10-50)并将它们显示给用户,并让用户控制移动到下一页/上一页的行。任何时候都不应该拉下整个表,因为用户实际上不太可能一次完成所有 500K 行,所以拉所有行是对资源的巨大浪费,并且可能会导致应用程序中的主要资源争用。

      【讨论】:

        猜你喜欢
        • 2016-12-05
        • 1970-01-01
        • 2018-12-27
        • 1970-01-01
        • 2016-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多