5

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

4 回答 4

12

我正在使用 aSELECT COUNT(*)并希望int返回 an 。你可能需要这个来获得一个可用的值:

mysqlint = int.Parse(query.ExecuteScalar().ToString());
于 2012-01-25T01:14:48.363 回答
6

有几件事...

您将使用的 SQL 语句是:

从测试中选择计数(*)

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

例如,正如这个问题Microsoft Connect int.Parse("0")中所引用的那样,在某些机器上Int32.Parse("0")也可以抛出 a 。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 对象。

于 2013-10-14T15:26:44.320 回答
2

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

于 2010-05-11T00:12:14.907 回答
1

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

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

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

于 2010-05-11T00:18:26.070 回答