我想知道如何使用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;
答案 0 :(得分:8)
我使用了SELECT COUNT(*)
并期望返回int
。您可能需要这样才能获得可用的值:
mysqlint = int.Parse(query.ExecuteScalar().ToString());
答案 1 :(得分:4)
有几件事......
您将使用的SQL语句是:
SELECT COUNT(*)FROM test
但是,当使用 MySQL Connector / Net 通过C#连接到MySQL时,在处理查询结果时需要注意。
例如,正如this question和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;
}
}
请记住使用使用语句,以确保MySQL对象得到妥善处理。
答案 2 :(得分:2)
您在每行的result
中添加了一个新元素。根据{{1}}的类型,您应该能够在while循环完成后执行result
之类的操作。
答案 3 :(得分:1)
您可以先运行另一个查询来获取计数:
query = new MySqlCommand("SELECT count(*) as theCount FROM test ORDER BY type_ID ASC", this.conn);
但实际上,您可能最好更改问题,因此在填充列表之前,您不需要计数。