Sql 直接从 DataReader 中选择
Posted
技术标签:
【中文标题】Sql 直接从 DataReader 中选择【英文标题】:Sql Select direclty from a DataReader 【发布时间】:2013-12-10 19:02:06 【问题描述】:我开发了一个需要从数据库读取数据的 C# 应用程序。
如果我在存储数据库的服务器上运行这个应用程序,它很快,但是,如果我通过网络运行这个应用程序,SQL 查询很慢。
我想修改我的程序,以便将第一个响应的请求存储在应用程序内存中,其次能够在内存上执行另一个 SQL 查询(为了不使用网络传输)。
是否有可能在数据阅读器中进行 SQL 查询?
或者我可能需要使用数据集?
【问题讨论】:
可能你需要看看一个叫做 Linq 的东西 让我们稍微澄清一下。什么在 C# 代码中花费了太长时间:执行查询或执行查询并显示查询返回的数据? 与论坛网站不同,我们不使用“谢谢”、“任何帮助表示赞赏”或Stack Overflow 上的签名。请参阅“Should 'Hi', 'thanks,' taglines, and salutations be removed from posts?. 查看“LINQ to Objects”,它允许您进行内存查询。您无需求助于DataSet
,这是相当古老的技术。
您希望如何在内存中执行另一个 SQL 查询?那如何避免网络传输?
【参考方案1】:
是的。 ADO.NET 为您提供了该选项。使用您的数据加载DataTable
,如果您有多个表,则加载DataSet
。您可以将其存储在本地内存中,您可以查询DataTable
并对行进行排序和过滤,就像真正的 Sql 数据库一样。您可以在特定行上发出插入/更新/删除,并且您可能希望定期刷新数据。您将仅受将数据存储在内存中的机器上的内存量的限制。
【讨论】:
感谢您的回答,我只有一张桌子。所以也许数据集更好,不是吗?我需要在数据集上使用哪种方法进行查询? 你查询DataTable。如果只存在一个表,则不需要整个数据集。 DataSet 为您提供了更多的东西,例如,您甚至可以在表之间建立关系。您可以使用不同的DataView
s 对数据进行排序和过滤。使用 ADO.NET 可以对处于断开连接状态的数据执行的操作令人惊叹
好答案,我提出了我的 sql 请求并将其存储在 DataTable 中。接下来,我使用 Linq To DataSet 来查询我的 DataTable !谢谢:)以上是关于Sql 直接从 DataReader 中选择的主要内容,如果未能解决你的问题,请参考以下文章
从 SQL Datareader JavaScript 解析和格式化 JSON 数组
使用 SQL Server 锁定的 DataReader 行为