使用C#获取MySQL记录数

我想知道如何使用C#获取查询的记录计数。

这是我使用的代码..

MySqlDataReader recordset = null; query = new MySqlCommand("SELECT * FROM test ORDER BY type_ID ASC", this.conn); recordset = query.ExecuteReader(); while (recordset.Read()) { result.Add(recordset["type_ID"].ToString()); } return result; 

我正在使用SELECT COUNT(*)并期望返回一个int 。 您可能需要这样才能获得可用的值:

 mysqlint = int.Parse(query.ExecuteScalar().ToString()); 

有几件事……

您将使用的SQL语句是:

SELECT COUNT(*)FROM test

但是,当使用MySQL Connector / Net通过C#连接MySQL时,在处理查询结果时需要注意。

例如,正如本问题和Microsoft Connect中引用的int.Parse("0")等效地称为Int32.Parse("0")可以在某些机器上抛出FormatException

我发现Convert.ToInt32很好地处理这种情况。

所以你的代码将是这样的:

 using (var conn = new MySqlConnection(cs)) { conn.Open(); using (var cmd = new MySqlCommand("SELECT COUNT(*) FROM test", conn)) { int count = Convert.ToInt32(cmd.ExecuteScalar()); return count; } } 

请记住使用using语句以确保MySQL对象得到正确处理。

您在每行的result添加了一个新元素。 根据result类型,您应该能够在while循环完成后执行类似result.Count的操作。

您可以先运行另一个查询来获取计数:

 query = new MySqlCommand("SELECT count(*) as theCount FROM test ORDER BY type_ID ASC", this.conn); 

但事实上,你可能最好更改问题所以你不需要计算,直到你填写列表。