使用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);
但事实上,你可能最好更改问题所以你不需要计算,直到你填写列表。