我想在C#中显示一个包含多少行的MessageBox。
在这种情况下,我想展示" 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();
答案 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