Getting MySQL record count with C#

醉酒当歌 提交于 2019-12-07 12:24:47

问题


I would like to know how can I get record count of a query with C#.

Here is the code that I use..

    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;

回答1:


I was using a SELECT COUNT(*) and expected an int to be returned. You may need this to get a usable value:

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



回答2:


A couple of things...

The SQL statement you would use is:

SELECT COUNT(*) FROM test

However, when using the MySQL Connector/Net to connect to MySQL through C# there is some care to be given when handling query results.

For example, as cited in this question and on Microsoft Connect int.Parse("0") equivalently known as Int32.Parse("0") can throw a FormatException on some machines.

I have found that Convert.ToInt32 handles this case nicely.

So your code will be something like this:

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;
    }
}

Remember to make use of using statements in order to ensure that the MySQL objects get disposed of properly.




回答3:


You're adding a new element in result for each row. Depending on the type of result you should be able to do something like result.Count after the while loop completes.




回答4:


You could run another query first to get the count :

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

but in truth, you are probably best changing the problem so you wont need the count until after you have populated the list.



来源:https://stackoverflow.com/questions/2807282/getting-mysql-record-count-with-c-sharp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!