C# 使用SqlDataAdapter或SqlDataReader,哪一个更有效,并且对服务器的负载最小?
我正在编写一个ASP.NETC程序,在这个程序中,我必须多次访问SQL数据库并多次检索小数据。请建议哪种方法更有效?我应该使用SqlDataAdapter并将整个数据存储在DataTable中,并在需要时检索,还是使用SQLDataReader,请建议任何其他有效的方法(如果有的话)。谢谢!!: 这两个听起来都不太好。获取所有数据和挑选所需内容在服务器和客户端上听起来都很低效,而发送大量微小的sql请求听起来也很低效 理想情况下,您可以获得所需的所有数据,但不能在尽可能少的请求中获得更多数据。在SqlDataAdapter和SQlDataReader之间选择并不能解决这个问题。您需要查看您的设计并确定是否可以在不保留整个数据库的内存副本的情况下获取页面的所有相关数据C# 使用SqlDataAdapter或SqlDataReader,哪一个更有效,并且对服务器的负载最小?,c#,asp.net,sql-server-2005,sqldatareader,sqldataadapter,C#,Asp.net,Sql Server 2005,Sqldatareader,Sqldataadapter,我正在编写一个ASP.NETC程序,在这个程序中,我必须多次访问SQL数据库并多次检索小数据。请建议哪种方法更有效?我应该使用SqlDataAdapter并将整个数据存储在DataTable中,并在需要时检索,还是使用SQLDataReader,请建议任何其他有效的方法(如果有的话)。谢谢!!: 这两个听起来都不太好。获取所有数据和挑选所需内容在服务器和客户端上听起来都很低效,而发送大量微小的sql请求听起来也很低效 理想情况下,您可以获得所需的所有数据,但不能在尽可能少的请求中获得更多数据。在
顺便说一句,SqlDataAdapter在内部使用SqlDataReader来获取其数据。我的猜测是延迟加载,尽管答案会根据负载和用例的不同而有所不同。为什么需要多次加载小数据?你不能在一个步骤中缓存数据或加载更多数据吗?听起来好像你也应该将业务逻辑交换到数据库中,而不是使用循环。@蒂姆·施梅尔特:我必须从父表中选择一个实体并处理其子项。。我认为除了循环之外没有其他方法,因为我的知识可能有限,如果你能给我建议更好的方法,那么请这样做@loveComputerscience:很难找到更好的方法,因为我们不知道你到底想实现什么。但您应该通过JOIN链接父表和子表。