使用C#获取MySQL记录数

时间:2010-05-11 00:09:11

标签: c# mysql mysql-connector

我想知道如何使用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;

4 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:4)

有几件事......

您将使用的SQL语句是:

  

SELECT COUNT(*)FROM test

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

例如,正如this questionMicrosoft 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);

但实际上,您可能最好更改问题,因此在填充列表之前,您不需要计数。