【问题标题】:How to show the number of rows returned from a SQL query using C#如何使用 C# 显示从 SQL 查询返回的行数
【发布时间】:2017-05-17 13:08:17
【问题描述】:

我想在 C# 中显示一个 MessageBox,其中列出了多少行。

在这种情况下,我想在 C# 的 MessageBox 中显示“2”。

我的 SQL:

SELECT ogrno, COUNT(ogrno) FROM Sonuc WHERE sinavno='" + sinavno + "' GROUP BY ogrno

我的 C# 代码:

mdl.mysqlbaglan.Open();

MySqlCommand cmd3 = new MySqlCommand("SELECT ogrno, COUNT(distinct ogrno) FROM Sonuc WHERE sinavno = '" + sinavno + "' GROUP BY ogrno", mdl.mysqlbaglan)

MySqlDataReader oku3 = cmd3.ExecuteReader();

oku3.Read();    

{
    MessageBox.Show(oku3.GetInt64(1).ToString());
}

mdl.mysqlbaglan.Close();

【问题讨论】:

  • 你是如何从 C# 调用查询的?
  • MySqlCommand cmd3 = new MySqlCommand("SELECT ogrno, COUNT(ogrno) FROM Sonuc WHERE sinavno='" + sinavno + "' GROUP BY ogrno", mdl.mysqlbaglan);
  • 在查询中使用 AS 为结果创建列名:COUNT(ogrno) AS XXXXX。然后使用 XXXXX 像任何其他列一样获得结果。
  • imgur.com/a/LHhTL 我也想在消息框上看到“2”,我只得到“1”

标签: c# sql


【解决方案1】:
SELECT ogrno, COUNT(DISTINCT ogrno) FROM Sonuc 
WHERE sinavno='" + sinavno + "' GROUP BY ogrno

由于存在过滤结果集的where子句;上面的查询将计算过滤结果集的不同 orgno。如果您想过滤结果并且想知道表中有多少条记录,那么一种可能的方法是使用子查询。

SELECT ogrno, (Select COUNT(ogrno)) as Count FROM Sonuc 
WHERE sinavno='" + sinavno + "' GROUP BY ogrno

【讨论】:

  • 我得到了“1”,但你知道应该是“2”
  • 您的表中有多少条记录,您的要求是什么。请详细说明您的问题。
  • imgur.com/19N1ORl 这就是我有多少条记录。有 2 个不同的数字,“ogrno”
  • SELECT ogrno, (Select COUNT(ogrno)) as Count FROM Sonuc WHERE sinavno='" + sinavno + "' GROUP BY ogrno 在这我应该在消息框 oku3.GetInt64(1) 上写什么。 ToString ?
【解决方案2】:

如果您只想知道特定值的计数并且不需要结果集中的任何其他内容,则可以消除 GROUP BY、ogrno 列和 DataReader .我们可以用这个简单的ExecuteScalar() 方法替换所有这些,它只返回结果集第一列的第一行。如果没有返回它会抛出一个错误,然后catch 将分配 -1 的值。

好的做法也是如此;我从您的 SQL 语句中删除了内联变量并替换为参数。我还用using 块包裹起来,因为这是一次性物品。

string query3 = "SELECT Count(*) FROM Sonuc WHERE sinavno = @sinavno";
Int64 result3;

using(MySqlCommand cmd3 = new MySqlCommand(query3, mdl.mysqlbaglan)) {
    cmd3.Paramaters.AddWithValue("@sinavno", sinavno);

    try {
        mdl.mysqlbaglan.Open();
        result3 = (Int64)cmd3.ExecuteScalar();
    }
    catch (Exception ex) {
        result3 = -1;
        // your exception handling
    }
    finally {
        mdl.mysqlbaglan.Close();
        // any other cleanup
    }
}

MessageBox.Show(result3.ToString());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多