【问题标题】:ADO.NET number of rows that may be returned by a SQL Server select stored procedureADO.NET SQL Server 选择存储过程可能返回的行数
【发布时间】:2011-09-25 02:07:24
【问题描述】:

在使用 ado.net 的 C# 中,如何在不返回结果集和不更改存储过程的情况下仅知道 SQL Server 选择存储过程可能返回的行数?

我根本不想读取数据,我只想要行数,因为加载会消耗大量内存。

【问题讨论】:

    标签: c# sql-server-2005 ado.net


    【解决方案1】:

    我原本以为 .ExecuteNonQuery() 会做到这一点。但由于它不适用于 SELECT 语句,因此 DataReader 可能是您最好(最快)的选择。

    int count = 0;
    using (var dr = new SqlDataReader(cmd)) {
       while (dr.Read()) count++;
    }
    

    【讨论】:

      【解决方案2】:

      如果您只是不想加载结果,请创建另一个只返回 select Count(*) from etc... 的 sql 过程

      【讨论】:

      • 请举例说明如何使用具有参数@myPrm1、@myPrm2 的sql server 2005 和MySP 来实现。谢谢。
      • @Yaron 复制现有 SP 并将选择列表中的所有字段替换为单个 Count(*)
      • 但我在我的问题中写道“不更改存储过程”。
      • 你不必更改现有的 SP,只需创建另一个具有不同名称的 SP(类似于 ur_sp_name + _rowcount)。保留原始 SP 中的逻辑,只需用 Count(*) 替换 select 中的字段(如 Ben Robinson 建议的那样)
      • 谢谢,但一般来说这是要做的事情,因为我的项目中所有获取数据的存储过程都需要该功能。
      猜你喜欢
      • 1970-01-01
      • 2011-01-15
      • 2020-10-23
      • 1970-01-01
      • 2010-11-23
      • 2014-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多