【问题标题】:Store the result of count in a variable in SQL将 count 的结果存储在 SQL 中的变量中
【发布时间】:2021-01-26 04:03:00
【问题描述】:

在这段代码中,我想使用 SQL 查询将表中订阅的行数存储到一个变量中。我可以使用 'select count(*) from subscribe;' 来做到这一点但我不知道如何在这段代码中执行多个 sql 查询,因为如果我尝试执行多个查询,它会给我一个异常,您需要先关闭 datareader。谁能帮帮我?

sqlcon.Open();

SqlCommand cmd = new SqlCommand("select email from subscribe", sqlcon);

SqlDataReader da = cmd.ExecuteReader();

string[] arr = new string[4];
int i = 0;

while (da.Read())
{
    arr[i] = da.GetValue(0).ToString();
    Console.WriteLine(arr[i]);
    i++;
}

【问题讨论】:

  • 您是否尝试过使用 SQL COUNT() functionselect count(*) from subscribe
  • 不,实际上我已经打开了一个数据读取器,现在当我执行 ``` var totalRow = cmd.ExecuteScalar(); 行时它给了我一个异常; Console.WriteLine(totalRow);```。数据读取器已经打开,你需要关闭它。
  • 我想执行多个 SQL 查询,我该怎么做。

标签: c# sql asp.net database visual-web-developer


【解决方案1】:

尝试编辑提供的示例而不对其进行测试。

您需要添加第二个返回计数的查询。然后您需要使用 cmd.ExecuteReader() 和 da.NexResult() 才能读取计数(来自第二个结果集)。

sqlcon.Open();

SqlCommand cmd = new SqlCommand("select email from subscribe; select @@rowcount;", sqlcon);

SqlDataReader da = cmd.ExecuteReader();

string[] arr = new string[4];
int i = 0;

while (da.Read())
{
    arr[i] = da.GetValue(0).ToString();
    Console.WriteLine(arr[i]);
}

da.NextResult();

while (da.Read())
{
    i = (int) da.GetValue(0);
    Console.WriteLine($"Count: {i}");
}

【讨论】:

    【解决方案2】:

    好吧,如果您只需要 count(*),那么您可以查询它。但是,既然您需要值列表和行数?

    然后我会将数据读取器的结果发送到标准表。现在,这将为您提供一个不错的行列表,您可以对它做任何您想做的事情,而且您还可以从表对象中获取行数。

    所以,这会起作用:

    {
    var rstTable = new DataTable();
    using (var cmd = new SqlCommand("select email from subscribe", sqlcon))
    {
        cmd.Connection.Open();
        rstTable.Load(cmd.ExecuteReader);
    }
    
    int EmailCount = rstTable.Rows.Count;
    Debug.Print("Rows = " + EmailCount);
    // optional show data
    foreach (DataRow dr in rstTable.Rows)
        Debug.Print(dr("email"));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-19
      • 2014-04-24
      • 1970-01-01
      • 2014-06-26
      • 2014-06-30
      相关资源
      最近更新 更多