如何使用C#显示从SQL查询返回的行数

时间:2017-05-17 13:08:18

标签: c# sql

我想在C#中显示一个包含多少行的MessageBox。

Screenshot of the SQL query with a table of the results below. The table contains two rows.

在这种情况下,我想展示" 2"在C#中的MessageBox中。

我的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();

2 个答案:

答案 0 :(得分: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 :(得分:0)

如果您只想知道特定值的计数而您不需要结果集中的任何其他内容,则可以取消GROUP BY, ogrno 列以及{{1 }}。我们可以用简单的DataReader方法替换所有这些,该方法只返回结果集第一列的第一行。如果没有返回,则会抛出错误,然后ExecuteScalar()将指定 -1 的值。

这是良好的做法;我从SQL语句中删除了内联变量,并用paramater替换。我还用catch块包裹,因为这是一次性物品。

using