c# - 计算报告数据 - C# 通过 Collections 或 SQLite

标签 c# sqlite report

我目前正在为存储在 MSSQL 数据库中的数据开发一个报告工具。 数据库很大,因为它是一个生产数据库,我不是它的所有者,所以我无法扩展任何功能(添加表/函数等)。

为了获得我的报告编号,我需要使用昂贵的查询(游标),同时我不想给数据库造成不必要的压力。这也是非常复杂的事情,例如分析库存变动和使用情况,而不仅仅是简单的总和和计数。

所以我目前的方法是使用单个查询以小块的形式加载数据,将它们加载到集合中,然后运行几个 foreach 迭代来计算报告的数据。 基本上我是在内存中重建数据库,然后计算它。

我目前有很多代码(以及数据库中实体的对象),我开始认为通过 for 创建必要数据的本地简化副本可能是更好的解决方案例如一个单独的 SQLLite-DB。

我也考虑过 linq to objects 但本质上我仍然需要创建和填充对象...... 数据库甚至可以为新报告创建新查询,而不是对它们进行硬编码。 另一方面,它可能比在集合中做所有事情要慢......

所以,问题(最后): 您怎么看,手动将简化和简化版本的数据复制到本地数据库会更好,还是您会选择其他解决方案?

最佳答案

如果您的查询真的那么昂贵,那么您最好的选择是将它们加载到本地数据库中并在那里进行处理。我建议使用 SQL Server Express Edition,因为您可以利用 t-sql (link)。

至于加载数据,您可以使用查询、BCP、DTS 包或大约 50 个其他选项。

关于c# - 计算报告数据 - C# 通过 Collections 或 SQLite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6309040/

相关文章:

c# - 当我显示它时,我的自定义 progressBar 表单挂起

c# - 如何在我的在线站点中引入在线数据库

java - Android 从 Sqlite 数据库中保存并获取图像

python - openerp 中的 rml 报告

java - Crystal Report - 使用 ResultSet 的主报表中的子报表

c# - 标识符必须声明为 ORA-06550 和 PLS-00201

c# - 异步操作的非合作取消

java - Android sqlite创建数据库错误

java - 有没有一种有效的方法来重构这个 Android SQLite 数据库处理程序?

C# Winform - 如何通过向 ReportViewer 传递 3 个变量(即 Reportname(RDL 文件)、SQLstring 和 Connectionstring)来显示实时报告